私のPHPコードで何が起こっているのかを理解する助けが必要です。インスタンス化時にPHPクラスメソッドが呼び出されるのはなぜですか?
のindex.php
include("cache.php");
$cache = new Cache();
cache.php
class Cache {
private static $URL_CACHE;
public function cache($url, $entityId) {
echo '<br>caching '.$url.' as '.$entityId;
}
私はindex.phpを要求すると、私は驚きである、表示された 'として、キャッシング' を取得。私は決して電話をしませんでした$cache->cache('', '');
何を呼んでいますか?ブレイクの答えを1として
、(やや)メソッド名が一致するクラス名いるので、それをインスタンス化に呼ばれています。 Java開発者にとっては、これは確かに驚きです。
これは廃止予定のPHP機能を使用して、 '__contruct()'メソッドとして動作します。以前のバージョンのPHP(Remove in 7) 'Foo'という名前のクラスと' foo() 'という名前のクラスがあれば、それをコンストラクタとして呼び出す方法でした。要するに、これはあなたがクラスをインスタンス化することによって呼び出されています。あなたの 'cache()'メソッドを 'makeCache()'に変更すると、それは消えてしまうでしょう。 – Blake
@ブレイクあなたはaswerとしてそれを置くことができます –
右。メソッド名を変更しても機能します。答えとしてあなたの応答を使用してください、他の人がこれを追いかけて時間を費やさないようにしてください。 – jacekn