クラスの呼び出し方2通り Static(静的) & dynamic(動的)
最近ようやくPHPのオブジェクト指向の勉強を始めまして。遅ぇよ!ってな話ですが、「人生に遅すぎることはない」という安藤百福氏の名言を引用して話を先に進めたいと思います。
さて、オブジェクト指向ということは「クラスを作って、それをオブジェクトとして呼び出す」ということになります。
1.普通に(動的に)呼び出す
newでクラス名を指定してインスタンスとして呼び出します。
(砂の状態のイマジンに対して、契約して実体化させるようなイメージです。)
<?php $y = new dacelo(); $y->test(); class dacelo { public $name = 'dacelo'; function test() { echo "hello\n"; echo $this->name; } } |
実行結果
hello dacelo
daceloクラスの中では、メンバー変数としてnameが設定され、クラスの中でそれを$thisで呼び出しています。
2.スタティックに呼び出す
<?php dacelo::test(); class dacelo { public $name = 'dacelo'; function test() { echo "test\n"; echo $this->name; } } |
実行結果
test PHP Fatal error: Using $this when not in object context in /home/dacelo/tmp/test.php on line 14 Fatal error: Using $this when not in object context in /home/dacelo/tmp/test.php on line 14
メソッド(クラスの中の関数)を直接呼び出すには、コロン:を2つ付けて呼び出します。
このとき、インスタンスを作成していないので、$thisが使えません。フェイタルエラーになります。
$thisが自分として指し示すべきオブジェクトが存在していないということですね。
ではこのスタティック呼び出しはどういうときに使うかというと、クラスの中のメソッドのみを、関数のように使いたいという時に使います。
普通にその辺にぽっこり用意している関数との違いは、クラスでカプセル化することによって、名前空間の解決(関数名が被ったりしない)ということです。
広告
以上!Ciao!
PHPだと(staticでない)メソッドをstaticに呼び出すことができるらしい。中で$thisとかやったときに初めてエラーになる。なので、staticな変数にしかアクセスしてなければstaticメソッドとして使えるみたい。マジっすか。
http://t.co/59OgVEEC
Right now it looks like WordPress is the top blogging platform out there right now.
(from what I’ve read) Is that what you’re using on your blog?