2016-07-26 11 views
-1

を作成せずに構築する:それを実行するには実行クラスIは、このようなクラスのセットアップ持っているオブジェクト

class myClass { 
    public function __construct() { 
     echo 'foo bar'; 
    } 
} 

を、私は単純に行うことができます。

$object = new myClass; 

ので、クラスを実行する方法はあります__constructは、クラスオブジェクトで新しい変数を作成せずに開始します。

例えば、基本的な機能を使用して実行することができます:

functionname(); 
+0

明らかに私は初心者レベルでOOPを学んでいます:) –

+0

いいえ。コンストラクタを実行するには、クラスのインスタンスを作成する必要があります。 – Rizier123

+0

質問を提起....なぜあなたはしたいですか?コンストラクタの全体的なポイントは、クラスをインスタンス化するときに自動的に実行されるコードだということです。 –

答えて

3

__constructに直接電話しないでください。コンストラクタで何かが発生する必要があるが、結果としてオブジェクトを作成したくない場合は、staticメソッドを使用します。

class Thing{ 
    public static function talk(){echo "I talk";} 
} 
Thing::talk(); // 'I talk' 

静的メソッドは、クラスのオブジェクトインスタンスを必要とせずに呼び出すことができます。

__constructは、Magic Methodsと呼ばれるPHPの特別なグループのメソッドの一部です。これらを直接呼び出すことはありませんが、何らかのイベントが発生したときにPHPが呼び出すようにします。例えば、クラス上でnewを呼び出すと、__constructが実行されます。

もう一つの例:あなたが存在しないプロパティを取得しようとした場合(見つかった場合)、__getが実行されます。

Class Thing{ 
    public property $name = 'Berry'; 
    public function __get($propertyName){ 
     return "$propertyName does not exist!"; 
    } 
} 
$t = new Thing(); 
echo $t->name; // 'Berry' 
echo $t->weight; // 'weight does not exist!'; 
0

私はあなたがこれを必要とする理由はわかりませんが、あなたは、変数を作成する必要はありません。任意の場所に格納せずにオブジェクトを作成することができます。

class myClass { 
    public function __construct() { 
     echo 'foo bar'; 
    } 
} 

new myClass(); 

この場合、コンストラクタだけが呼び出されます。

0

静的避けたい場合は、このような何かを試すことができます。

(new MyClass)->myFunction(); 
+0

'new myclass())' – dbf

関連する問題