WordPressのカスタマイズとプラグイン、CSSテクニック、SEOの話題など。
In: php
24 2月 2010最近ようやくPHPのオブジェクト指向の勉強を始めまして。遅ぇよ!ってな話ですが、「人生に遅すぎることはない」という安藤百福氏の名言を引用して話を先に進めたいと思います。
さて、オブジェクト指向ということは「クラスを作って、それをオブジェクトとして呼び出す」ということになります。
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で呼び出しています。
<?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!
ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。