Php Yii getTypeText()
我是Yii领域的新手,在阅读Jeffrey Winesett关于Yii-“使用Yii和PHP开发Web应用程序的书时,我尽我所能地学习框架 我发现: 两项具体的公共职能:Php Yii getTypeText(),php,function,yii,Php,Function,Yii,我是Yii领域的新手,在阅读Jeffrey Winesett关于Yii-“使用Yii和PHP开发Web应用程序的书时,我尽我所能地学习框架 我发现: 两项具体的公共职能: public function getTypeOptions(){ return array(self::TYPE_BUG=>'Bug',self::FEATURE=>'Feature',self::TASK=>'Task'); } 以及: 现在我了解到getTypeOptions返
public function getTypeOptions(){
return array(self::TYPE_BUG=>'Bug',self::FEATURE=>'Feature',self::TASK=>'Task');
}
以及:
现在我了解到getTypeOptions返回了_form.php文件中TypeOptions下拉列表的数组,但是在另一个函数getTypeText()中的变量:
$typeOptions,我们直接调用如下函数:
$typeOptions = $this->typeOptions;
不指定函数的完整函数名
“getTypeOptions”
不应该是:
$typeOptions = $this->getTypeOptions();
getTypeOptions()的“get”是如何实现的你喜欢什么?这种方法总是适用吗
是Yii特定的还是我不知道的PHP
如果这是一个非常基本的问题,我很抱歉。如果读过这本书的人回答我,我将不胜感激。这是PHP功能 是的,只要模型中有
getAttributeName
方法,就可以使用$this->attributeName
返回方法的值,就像它是一个属性一样。它被称为“虚拟属性”。这里有一个关于它的wiki页面:
您将在Yii文档和教程中看到这一点。例如,Yii::app()->getClientScript()
方法通常只是使用Yii::app()->clientScript
当您使用CGridView时,它也非常方便,因为您可以在模型中定义一个类似getAttribute()
的方法,然后添加一个名为'attribute'
的CGridView列来访问它
之所以可以这样做,是因为CActiveRecord类中有一个PHP getter magic方法。如果您感兴趣,我将在下面粘贴该方法:
/**
* PHP getter magic method.
* This method is overridden so that AR attributes can be accessed like properties.
* @param string $name property name
* @return mixed property value
* @see getAttribute
*/
public function __get($name)
{
if(isset($this->_attributes[$name]))
return $this->_attributes[$name];
elseif(isset($this->getMetaData()->columns[$name]))
return null;
elseif(isset($this->_related[$name]))
return $this->_related[$name];
elseif(isset($this->getMetaData()->relations[$name]))
return $this->getRelated($name);
else
return parent::__get($name);
}
这被称为getter-magic方法,当无法找到或访问属性时会调用它。您也可以在Yii之外使用相同类型的方法:是的,这是Yii特有的。特别是,基类重写
\uuu get
和\uu set
以允许此语法:
属性由getter方法和/或setter方法定义。
可以像访问普通对象一样访问属性
成员。读取或写入属性将导致调用
相应的getter或setter方法,例如
$a=$component->text; // equivalent to $a=$component->getText();
$component->text='abc'; // equivalent to $component->setText('abc');
getter和
setter方法如下所示:
// getter, defines a readable property 'text'
public function getText() { ... }
// setter, defines a writable property 'text'
public function setText($value) { ... }
您可以在线浏览实际实现。$this->typeOptions是指公共变量$typeOptions。如果查看文件顶部,您会看到行“public$typeOptions”。它不是指getTypeOptions()函数。不,我的代码中没有public$typeOptions。唯一的typeOption变量就是我上面描述的变量。非常感谢您的精彩见解!!:)我真的从中学到了很多!!
// getter, defines a readable property 'text'
public function getText() { ... }
// setter, defines a writable property 'text'
public function setText($value) { ... }