Php子方法

Php子方法,php,cakephp,Php,Cakephp,我对php的使用非常熟悉,但最近我一直在浏览一些MVC框架,试图了解它们是如何工作的,我遇到了一种我以前从未遇到过的语法和数据结构: function view($id) { $this->Note->id = $id; } 此代码的->id部分是什么?这是基于其父方法的子方法吗?如果是这样,我该如何编写代码来创建这样的结构?(即,从头开始创建结构,而不是像cakephp中的上述示例那样使用现有框架)。注意是$this的一个属性,它的(当

我对php的使用非常熟悉,但最近我一直在浏览一些MVC框架,试图了解它们是如何工作的,我遇到了一种我以前从未遇到过的语法和数据结构:

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:那是完全错误的说法。