Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向学习PHP的人解释这一点和自我';面向对象设计_Php_Oop_This - Fatal编程技术网

向学习PHP的人解释这一点和自我';面向对象设计

向学习PHP的人解释这一点和自我';面向对象设计,php,oop,this,Php,Oop,This,我正在尝试教一些朋友PHP,我正在尝试解释$this->如何在没有技术术语的情况下工作。我相信一旦我让他们理解了这一点,我就可以开始教他们如何使用面向对象编程 我所教的人了解如何使用类、变量,以及它们如何使用函数和变量的扩展、公共、私有和保护范围相互作用 唯一阻碍他们的是向他们解释$this->和self::。我试图通过说“当您引用一个类变量时,您将使用$this->”在函数中调用它来简化它,因为我们在类中而不是在函数本身中定义了它 有没有更好、更简单的方法向学习PHP的OOP设计的人解释这一点

我正在尝试教一些朋友PHP,我正在尝试解释
$this->
如何在没有技术术语的情况下工作。我相信一旦我让他们理解了这一点,我就可以开始教他们如何使用面向对象编程

我所教的人了解如何使用类、变量,以及它们如何使用函数和变量的
扩展
公共
私有
保护
范围相互作用

唯一阻碍他们的是向他们解释
$this->
self::
。我试图通过说“当您引用一个类变量时,您将使用
$this->
”在函数中调用它来简化它,因为我们在类中而不是在函数本身中定义了它

有没有更好、更简单的方法向学习PHP的OOP设计的人解释这一点?


我还注意到,一旦你进入编程语言的高级阶段,你就会习惯于使用这些方法而不去考虑它们。对我来说,如果不使用专业术语解释如何使用这些方法,就很难回到基础上来。

您可以尝试以下方法:

每辆车都有燃油(
$fuel

但是如果你在车里,你不想知道其他车的燃料,你想知道你车的燃料

所以你喜欢
$this->fuel


我认为这应该足够简单,而且不会损失太多的准确性。

当您有一个类-现有对象-示例:

class Object
{
     protected $variable;

     public function method($param) {}
}
$this
只是告诉
ME
的一种方式

例如,当你开始吃东西时,你就这样做了

ME::getSpoon();
ME::UseSPoonToFetchSoup();
ME::BringSpoonToMouth();
ME::PutSpoonInMouth();
ME::TakeSpoonOut();
ME::Swallow():
然后重复一些步骤。
ME
是您自己的参考资料。如果你想一想,这个算法几乎适用于所有人,每个现有的ppl都可以使用它,只要记住,
ME
是实际的,人类用勺子喝汤

对象也是如此。在本例中,如果将代码稍微更改为

class Object
{
     protected $variable = 0;

     public function method($param = 1) {$this->variable += $param; return $this->variable;}
}
执行方法
method()会将
$variable
1添加到对象自己的内存中,然后告诉您新的总和

$obj1 = new Object();
$obj2 = new Object();

echo "Obj1: " .$obj->method(10).'<br/>'; //this will print 10
echo "Obj2: " .$obj->method(2).'<br/>'; //;this will print 2
$obj1=新对象();
$obj2=新对象();
回显“Obj1:.$obj->方法(10)。
//这将打印10个 echo“Obj2:.$obj->方法(2)。”
;//;这将打印2
这些对象必须知道他们是谁,因此需要知道他们自己的引用,这就是
$This
的相同之处


希望这个解释非常简单易懂。

我认为,要教授PHP的
$this
的概念,必须首先解释OOP的基础知识。这是一个只有在适当的背景下才有意义的概念。爱因斯坦:
如果你不能向一个六岁的孩子解释它,你自己也不理解它
他们理解OOP设计是如何工作的,但他们只是被OOP的
$this->
部分挂断了。我相信,一旦我让他们克服了理解这个小问题,我就可以进一步帮助他们。
$此
指的是对象中对象的内部变量和方法。我想很难解释封装以及为什么这很有用;)根据您的答案,可以使用它查找模型(
$this->model
)、制作年份(
$this->year
)和颜色(
$this->color
)。仅查找有关您汽车的信息。请-如果您拒绝投票-留下评论原因。