PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间

PHP中可以动态地创建属性和方法,这使得PHP的对象具有很大的灵活性。动态创建属性:

$obj = new stdClass();
$obj->name = 'John';  // 动态创建name属性
echo $obj->name;  // John

动态创建方法:

 
$obj = new stdClass();
$obj->run = function() { 
    echo 'Running!'; 
};
$obj->run();   // Running!

对象的复制可以使用clone关键字:

$obj1 = new stdClass();
$obj1->name = 'John';

$obj2 = clone $obj1;
echo $obj2->name;  // John

对象的比较使用==和===操作符。==会比较对象的值,===判断对象是否为同一个对象。

$obj1 = new stdClass();  
$obj1->name = 'John';
$obj2 = new stdClass();
$obj2->name = 'John';

var_dump($obj1 == $obj2);   // false,值相等但不是同一对象
var_dump($obj1 === $obj2);  // false 

$obj3 = $obj1;
var_dump($obj1 == $obj3);   // true 
var_dump($obj1 === $obj3);  // true, obj1和obj3是同一对象

加载指定文件使用include或require:

// test.php内容
<?php 
echo 'Hello';
?>

// index.php
include 'test.php';   // 输出Hello

自动加载类文件使用__autoload()函数:

function __autoload($className) {
    require $className . '.php'; 
}

$obj = new Foo();  // 会自动require Foo.php文件

命名空间的声明使用namespace:

// a.php
namespace Foo\Bar;

class Baz {
    public function run() {
        echo 'Hello';
    }
}

// b.php
use Foo\Bar\Baz;

$obj = new Baz();
$obj->run();  // Hello
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论