• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Yii框架getter与setter方法功能与用法分析

    本文实例讲述了Yii框架getter与setter方法功能与用法。分享给大家供大家参考,具体如下:

    1.属性

    在 PHP 中,类的成员变量也被称为属性。它们是类定义的一部分, 用来表现一个实例的状态(也就是区分类的不同实例)。 在具体实践中,常常会想用一个稍微特殊些的方法实现属性的读写。 例如,如果有需求每次都要对 label 属性执行 trim 操作, 就可以用以下代码实现:

    $object->label = trim($label);
    
    

    上述代码的缺点是只要修改 label 属性就必须再次调用 trim() 函数。 若将来需要用其它方式处理 label 属性,比如首字母大写, 就不得不修改所有给 label 属性赋值的代码。这种代码的重复会导致 bug, 这种实践显然需要尽可能避免。

    为解决该问题,Yii 引入了一个名为 yii\base\Object 的基类, 它支持基于类内的 getter 和 setter(读取器和设定器)方法来定义属性。 如果某类需要支持这个特性,只需要继承 yii\base\Object 或其子类即可。

    信息: 几乎每个 Yii 框架的核心类都继承自 yii\base\Object 或其子类。 这意味着只要在核心类中见到 getter 或 setter 方法,就可以像调用属性一样调用它。

    2.讲述

    getter 方法是名称以 get 开头的方法,而 setter 方法名以 set 开头。 方法名中 get 或 set 后面的部分就定义了该属性的名字。如下面代码所示, getter 方法 getLabel() 和 setter 方法 setLabel() 操作的是 label 属性,:

    namespace app\components;
    use yii\base\BaseObject;
    class Foo extend BaseObject
    {
      private $_label;
      public function getLabel()
      {
        return $this->_label;
      }
      public function setLabel($value)
      {
        $this->_label = trim($value);
      }
    }
    
    

    (详细解释:getter 和 setter 方法创建了一个名为 label 的属性, 在这个例子里,它指向一个私有的内部属性 _label。)

    getter/setter 定义的属性用法与类成员变量一样。两者主要的区别是: 当这种属性被读取时,对应的 getter 方法将被调用;而当属性被赋值时, 对应的 setter 方法就调用。如:

    // 通过方法进行获取属性
    // 等效于 $label = $object->getLabel();
    // 这个是直接通过属性获取  就是说这个属性找不到 就会调用方法 在方法中进行获取属性
    $label = $object->label;
    // 等效于 $object->setLabel('abc');
    $object->label = 'abc';
    
    

    只定义了 getter 没有 setter 的属性是只读属性。 尝试赋值给这样的属性将导致 InvalidCallException (无效调用)异常。 类似的,只有 setter 方法而没有 getter 方法定义的属性是只写属性, 尝试读取这种属性也会触发异常。使用只写属性的情况几乎没有。

    通过 getter 和 setter 定义的属性也有一些特殊规则和限制:

    回到开头提到的问题,与其处处要调用 trim() 函数, 现在我们只需在 setter setLabel() 方法内调用一次。 如果 label 首字母变成大写的新要求来了,我们只需要修改setLabel() 方法, 而无须接触任何其它代码。

    更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • Yii2框架配置文件(Application属性)与调试技巧实例分析
    • Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
    • 详解PHP的Yii框架中组件行为的属性注入和方法注入
    • 深入讲解PHP的Yii框架中的属性(Property)
    • Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
    • Yii2设置默认控制器的两种方法
    • Yii获取当前url和域名的方法
    • Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
    • Yii操作数据库实现动态获取表名的方法
    • Yii Framework框架获取分类下面的所有子类方法
    上一篇:PHP数组对象与Json转换操作实例分析
    下一篇:Laravel 实现在Blade模版中使用全局变量代替路径的例子
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Yii框架getter与setter方法功能与用法分析 Yii,框架,getter,与,setter,方法,