2016-04-20 5 views
2

私はクラス他のクラスの関数を呼び出す方法は2通りありますか?

<?php 
class Test{ 
    public function printword($word){ 
     echo $word; 
    } 
} 
?> 

、別のクラスのを持って、私はそれを呼び出します。

<?php 
//Included needed files !!! 
$w = 'Hello'; 

//Way 1 
$a = new Test; 
$result = $a->printword($w); 

//Way 2 
$result = Test::printword($w); 
?> 

別ですか?

$a = new Test;または$a = new Test();が正しいですか?

+0

*違いますか?はい、間違っていて、もう一方は正しいです。静的メソッドがないので、 ' - >'を使う必要があります。 *そして$ a =新しいテスト。または$ a = new Test();そうですか?引数をコンストラクタに渡したい場合はもちろん、かっこを書く必要があります。 – Rizier123

+0

私は$ result = Test :: printword($ w)を使用します。それはまだ実行されますか? –

+0

public static function printword() – Fil

答えて

2

はい、違います。メソッドを宣言すると、staticはクラスのインスタンス化を必要とせずにそれらをアクセス可能にします。

class Test{ 
    public function printword($word){ 
     echo $word; 
    } 
} 

//Call printword method 
$a= new Test(); 
$a->printword('Words to print'); 

静的メソッド:

class Test{ 
    public static function printword($word){ 
     echo $word; 
    } 
} 

//Do not need to instantiation Test class 
Test::printword('Words to print'); 

documentationを参照してください。

+0

ありがとう、たくさんありがとう。それは私に役立ちます:) –

+0

それはシンプルで使いやすく、インスタンス化する必要がないので、私たちはすべての静的関数を使用する必要がありますか? –

+0

実際には、いいえ、静的メソッドを使用し、クラスのプロパティに依存しない(たとえば、BBコードからHTMLへのシンタックスコンバーターなど) – Meathanjay

関連する問題