Php子方法
我对php的使用非常熟悉,但最近我一直在浏览一些MVC框架,试图了解它们是如何工作的,我遇到了一种我以前从未遇到过的语法和数据结构:Php子方法,php,cakephp,Php,Cakephp,我对php的使用非常熟悉,但最近我一直在浏览一些MVC框架,试图了解它们是如何工作的,我遇到了一种我以前从未遇到过的语法和数据结构: function view($id) { $this->Note->id = $id; } 此代码的->id部分是什么?这是基于其父方法的子方法吗?如果是这样,我该如何编写代码来创建这样的结构?(即,从头开始创建结构,而不是像cakephp中的上述示例那样使用现有框架)。注意是$this的一个属性,它的(当
function view($id)
{
$this->Note->id = $id;
}
此代码的->id部分是什么?这是基于其父方法的子方法吗?如果是这样,我该如何编写代码来创建这样的结构?(即,从头开始创建结构,而不是像cakephp中的上述示例那样使用现有框架)。
注意
是$this
的一个属性,它的(当前)值是一个名为id
的属性对象,该属性被分配了$id
的值如果
id
是Note
对象的一个方法,那么该行将读取$this->Note->id($id)代码>以下代码演示了如何获得所描述的结构
<?php
class Note
{
public $id = 42;
}
class MyClass
{
public function __construct() {
// instance of 'Note' as a property of 'MyClass'
$this->Note = new Note();
}
public function test() {
printf("The \$id property in our instance of 'Note' is: %d\n",
$this->Note->id);
}
}
$mc = new MyClass();
$mc->test();
?>
思考构造的另一种方式是考虑
$this->Note->id = $id;
近似
$this["Note"]["id"] = $id;
如果两个对象($this和subobject Note)都基于ArrayAccess,那么这实际上是等效的。这可能是类中的一个方法(related)的重复。查看它的$note=$this->note$注意->id=$id
它本质上意味着$this->note本身就是一个具有适当$id的对象。在构造函数之前不应该MyClass
有var$note
吗?不需要声明实例属性,但您是对的-它可能“更正确”。顺便说一句,“公共”或“私人”优先于“风险值”。看:你不必在报纸上申报任何东西php@dogmatic69:那是完全错误的说法。