方法名同类名相同若是没有__construct,会被当作构造函数。

简介
本文主要罗列些例子,看看当php类名和函数名重名时,php是如何处理的
例子
<?php

class TestObject
{
public $subject;
private $message = 'test' . PHP_EOL;

public function testObject()
{
echo $this->message;
}
}

$instance = new TestObject();
$instance->testobject();
输出
php test1.php
test
test
缘由?
在php4时,构造函数用的是与类同名的函数来进行构造这个动做,且因为类名和方法不区分大小写。 因此在上述例子中,构造函数执行了一个echo, 方法也被执行了一次。故有两个test输出。 下面咱们经过例举各类组合,来体验一下效果。
只有一个构造函数
<?php

class TestObject
{
public $subject;
private $message = 'test' . PHP_EOL;

public function testObject()
{
echo $this->message;
}
}

$instance = new TestObject();
//$instance->testobject();
输出
php test2.php
test
一次输出
指定2个方法时
<?php

class Test_Object
{
public $subject = 'subject' . PHP_EOL;
private $message = 'test' . PHP_EOL;

public function test_object()
{
echo $this->message;
}

public function test_subject()
{
echo $this->subject;
}
}

$instance = new Test_Object();
$instance->test_object();
$instance->test_subject();
输出
php test3.php
test
test
subject
构造函数和同名方法各输出一次,不一样名方法输出一次
类名与方法名不一样时
<?php

class Test_Object
{
public $subject = 'subject' . PHP_EOL;
private $message = 'test' . PHP_EOL;

public function testMessage()
{
echo $this->message;
}
}

$instance = new Test_Object();
$instance->testMessage();
输出
php test4.php
test
不一样名方法输出一次
类名和方法名一致时
<?php

class Test_Object
{
public $subject = 'subject' . PHP_EOL;
private $message = 'test' . PHP_EOL;

public function test_object()
{
echo $this->message;
}
}

$instance = new Test_Object();
$instance->test_object();
输出
php test5.php
test
test
构造函数和同名方法各输出一次
---------------------
做者:huuinn
来源:CSDN
原文:https://blog.csdn.net/huuinn/article/details/79294638
版权声明:本文为博主原创文章,转载请附上博文连接!php

相关文章
相关标签/搜索