编辑:标题编辑,使其更有用.最初我不知道是使用了导致问题的共享单词.
这是非常基本但相当神秘.
我有两节课:
class Hello
{
public function hello()
{
echo "Hello";
}
}
Run Code Online (Sandbox Code Playgroud)
和
class World
{
public function world()
{
echo " World";
}
}
Run Code Online (Sandbox Code Playgroud)
叫做
include_once 'classes/Hello.php';
include_once 'classes/world.php';
$hi= new Hello;
$wd= new World;`
Run Code Online (Sandbox Code Playgroud)
结果 Hello World
我最初不小心得到hello了班级World方法的名称.结果Hello即没有World.
问题1
为什么这些方法会被解雇?我已经实例化了两个对象,但没有请求方法"触发".我以为我必须做以下事情:
$hi->hello();
Run Code Online (Sandbox Code Playgroud)
得到一个输出.
问题2
我更加神秘的是,如果两个函数都被称为hello,我只会得到Hello.
一定
$hi= new Hello;
$wd= new World;
Run Code Online (Sandbox Code Playgroud)
实例化两个完全独立的对象.那么方法的实际NAME如何影响任何东西呢?
我还有很长的路要走,但这让我很困惑.
Riz*_*123 10
当您创建此类的新实例时,两个方法都会被调用,因为这些方法与类本身具有相同的名称,因此它们是此类的构造函数:
class Hello
{
public function hello()
{
echo "Hello";
}
}
class World
{
public function world()
{
echo " World";
}
}
因此,当您从两个类中获取实例时,两个构造函数都被调用.
现在,当您将两个方法重命名为hello仅1个方法时,将其视为构造函数,另一个方法是另一个类中的常规方法.这就是你只看到Hello输出的原因.
但是不要使用类的名称作为构造函数!它将在PHP 7中弃用.使用__construct().
| 归档时间: |
|
| 查看次数: |
1611 次 |
| 最近记录: |