例1.
這是一個入門級的建立物件的方法.
<?php
class User{
public $name = '青風百里';
public $age = '27';
public $sex = '男';
public function show(){
return $this->name.'有'.$this->age.'歲,性別是'.$this->sex;
}
}
$user = new User();
echo $user->show();
例2.
將類名放到一個變數$className
中,new
物件的時候,不直接寫字串,而是寫一個變數.
我覺得這樣做的好處在於提高了建立物件的靈活性,我給$className
傳遞什麼字串,就可以建立出什麼物件,正所謂以不變應萬變.
<?php
class User{
public $name = '青風百里';
public $age = '27';
public $sex = '男';
public function show(){
return $this->name.'有'.$this->age.'歲,性別是'.$this->sex;
}
}
$className = "User";
$user = new $className;
echo $user->show();
例3.
不理解這種做法的好處.
<?php
class User{
public $name = '青風百里';
public $age = '27';
public $sex = '男';
public function show(){
return $this->name.'有'.$this->age.'歲,性別是'.$this->sex;
}
}
$user1 = new User();
$user2 = new $user1;
echo $user2->show();
例4.
注意$user2
這個物件是使用了$user1
中的方法來建立的.
<?php
class User{
public $name = '青風百里';
public $age = '27';
public $sex = '男';
public function show(){
return $this->name.'有'.$this->age.'歲,性別是'.$this->sex;
}
public function getInstance(){
return new self();
}
}
$user1 = new User();
$user2 = $user1->getInstance();
echo $user2->show();
例5.new parent()
可以用來在子類中呼叫,用於建立父類物件,那麼,建立一個繼承於User
的子類SubUser
,並在子類中寫一個方法,getInstance
,返回new parent()
.
<?php
class User{
public $name = '青風百里';
public $age = '27';
public $sex = '男';
public function show(){
return $this->name.'有'.$this->age.'歲,性別是'.$this->sex;
}
}
class SubUser extends User{
public function getInstance() {
return new parent();
}
}
$subUser = new SubUser();
$user = $subUser->getInstance();
echo $user->show();
例6.
<?php
class User {
public $name = '青風百里';
public $age = '27';
public $sex = '男';
public function show() {
return $this->name . '有' . $this->age . '歲,性別是' . $this->sex;
}
public function getInstance() {
return new static();
}
}
$user1 = new User();
$user2 = $user1->getInstance();
echo $user2->show();
下面這幾個方法有待查資料去了解有什麼用.
<?php
echo "<pre>";
$object = new stdClass();
var_dump($object);
$object = new class {
};
var_dump($object);
$object = (Object)NULL;
var_dump($object);
echo "</pre>";
對於 stdClass()
的理解
通過查閱資料, stdClass
類是一個沒有成員變數也沒有成員方法的類,它的所有的魔術方法,父類,介面等在初始化時都被設定成NULL,任何時候都可以建立它的物件.
沒有成員變數,我們可以在建立物件之後給它新增,沒有成員方法,就不再可以新增了,那麼用處就是可以用它來代替陣列,儲存資料,寫個小例子驗證一下.
<?php
$obj = new stdClass();
$obj->name = "小明";
$obj->age = 25;
function showMessage(stdClass $obj) {
return "姓名是:" . $obj->name . ",年齡是:" . $obj->age;
}
echo showMessage($obj);//輸出 "姓名是:小明,年齡是:25"
new class {}
和 (Object)NULL
目前只知道通過 new class {}
產生的是一個匿名類,通過 (Object)NULL
產生的是一個stdClass
類的例項.
本作品採用《CC 協議》,轉載必須註明作者和本文連結