方法名同類名相同若是沒有__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

相關文章
相關標籤/搜索