PHPダイナミック作成プロパティとメソッド、オブジェクトのコピー、オブジェクトの比較、指定したファイルのロード、クラスファイルの自動ロード、ネーミングスペース

5737 ワード

PHP前言:
•プロパティとメソッドを動的に作成
•オブジェクトのコピー
•オブジェクトの比較
•指定したファイルのロード
•クラスファイルの自動ロード
•ネーミングスペース

1、クラスに関する知識点3(属性とメソッドを動的に作成)
class/class3.php

";
}
// __get     ,               (private)        
public function __get($name)
{
echo "__get \$name: {$name}";
echo "
"; return 999; } } $objClass1 = new Class1(); // (private) , __set $objClass1->property1 = wanglei; // private , // (private) , __get echo $objClass1->property2; echo "
"; // ( php ) class Class2 { // __call , (private) public function __call($name, $arguments) { echo "__call \$name: {$name}, \$arguments: " . implode(', ', $arguments); echo "
"; } // __callStatic , (private) public static function __callStatic($name, $arguments) { echo "__callStatic \$name: {$name}, \$arguments: " . implode(', ', $arguments); echo "
"; } } $objClass2 = new Class2(); // (private) , __call echo $objClass2->method1("aaa", "bbb"); // (private) , __callStatic echo Class2::method2("aaa", "bbb");

2、クラスに関する知識点4(オブジェクトのコピー、オブジェクトの比較)
class/class4.php

";
}
}
$objClass1 = new Class1();
//    clone     ,    __clone     
$objClass2 = clone $objClass1;
//    clone          (shallow copy),            ,                         (     deep copy       )
echo $objClass2->field1; // output: field1
echo "
"; echo $objClass2->field2; // output: field2 echo "
"; // , “==” , if ($objClass1 == $objClass2) { echo '$objClass1 == $objClass2'; echo "
"; } // , , “===” if ($objClass1 !== $objClass2) { echo '$objClass1 !== $objClass2'; echo "
"; } // , “===” if ($objClass1 === $objClass1) { echo '$objClass1 === $objClass1'; echo "
"; } // , “===” $objClass3 = &$objClass1; if ($objClass1 === $objClass3) { echo '$objClass1 === $objClass3'; echo "
"; }

3、クラスに関する知識点5(指定したファイルをロードし、自動的にクラスファイルをロードする)
class/class5.php

name;
echo "
"; class/MyClass.class.php

4、クラスに関する知識点6(ネーミングスペース)
class/class6.php

";
}
class MyClass
{
public function myMethod()
{
echo "MyNamespace1 MyClass myMethod";
echo "
"; } } } // , namespace Sub1\Sub2\MyNamespace2 { const MyConst = "MyNamespace2 MyConst"; function myFunction() { echo "MyNamespace2 myFunction"; echo "
"; } class MyClass { public function myMethod() { echo "MyNamespace2 MyClass myMethod"; echo "
"; } } } namespace MyNamespace3 { // echo \MyNamespace1\MyConst; echo "
"; // \MyNamespace1\myFunction(); // $obj1 = new \MyNamespace1\MyClass(); $obj1->myMethod(); } namespace MyNamespace4 { // use use \Sub1\Sub2\MyNamespace2; // , use echo MyNamespace2\MyConst; echo "
"; MyNamespace2\myFunction(); $obj1 = new MyNamespace2\MyClass(); $obj1->myMethod(); } namespace MyNamespace5 { // use , use \Sub1\Sub2\MyNamespace2 as xxx; // , echo xxx\MyConst; echo "
"; xxx\myFunction(); $obj1 = new xxx\MyClass(); $obj1->myMethod(); }

以上、編集者がご紹介したPHPのプロパティと方法、オブジェクトのコピー、オブジェクトの比較、指定したファイルのロード、クラスファイルの自動ロード、ネーミングスペースに関する紹介ですが、皆さんの役に立つことを願っています.