2015-03-19 バージョンの PHP マニュアルを読んだ後のメモ
クラスとオブジェクト->基本概念:
1、################ ## ##########
::class
PHP 5.5 以降、キーワード class はクラス名解決にも使用できます。 ClassName::class を使用すると、クラス ClassName の完全修飾名を含む文字列を取得できます。これは、名前空間を使用するクラスに特に役立ちます。
例 #7 ドキュメントに記載されているクラス名の解決は次のとおりです:
namespace NS {
class ClassName {
}
echo ClassName::class;
}
?>
上記のルーチンは次のように出力します:
NSClassName
2,################ ##########
明確にしておきます: ドキュメントに記載されているクラス名を検証する正しい方法は次のとおりです:
$valid = preg_match('/^[a-zA -Z_x7f -xff][a-zA-Z0-9_x7f-xff]*$/', $className);
3,################ ## ##########
属性内の変数は初期化できますが、初期化された値は定数である必要があります。ここでの定数とは、PHP スクリプトがランタイムのみに依存せずにコンパイル段階で値を取得できることを意味します。情報を評価できます
PHP 5.3.0 では、Nowdoc 宣言クラス属性のサポートが追加されています。変数を使用しないヒアドキュメントも可能ですが、変数を含めることは間違いです。
new static() は継承関係に従います、new はサブクラスです
new self() は継承されません、new は単語 self が配置されているクラスです
###
PHP 5.6 では、次のように数式を使用して定数を定義できるようになりました。
class MyTimer {
const SEC_PER_DAY = 60 * 60 * 24;
}
?>
###
PHP 5.3.3 以降、名前空間では、クラス名と同じ名前のメソッドはもはやコンストラクターとしてではありません。この変更は、名前空間にないクラスには影響しません。
namespace Foo;
class Bar {
public $a;
public function Bar() {
$this->a = 'ここまで';
}
public function getA(){
return $this->a;
}
}
$bar = new Bar();
echo $bar- >getA(); //Empty; 名前空間を削除してここに出力します;
###
PHP 5.3.0 以降、クラスは変数を介して参照できます。この変数の値をキーワード (self、parent、static など) にすることはできません。
組織の場合:
self、parent、static
public (パブリック)、protected (保護)、または private (プライベート)