2012-10-18 11 views
6

これは作業コードですが、$barオブジェクトを使用してclass FooprintItem()メソッドをどのように使用することができます別のオブジェクト(コメント$foo)を使用せずに知りたいです。新ので聞いて弱いものになるかもしれませんが、見つけることが本当にできない:(どのようにPHPの親クラスメソッドを呼び出す方法

私はFoo classprintItem()を使用するスコープ解決演算子を使用して、コンセプトをプログラミングOOPするために、今私たちは、この機能を使用することができたときに私のクエリがあり、その後の使用は何ですか?。オブジェクトを作成するときに

<?php 

class Foo 
{ 
    public function printItem($string) 
    { 
     echo "This is in class Foo ". $string ."<br />"; 
    } 

    public function printPHP() 
    { 
     echo "PHP is great "."<br />"; 
    } 
} 

class Bar extends Foo 
{ 
    public function printItem($string) 
    { 
     echo "This is in class Bar ". $string ."<br />"; 
    } 
}  

//$foo = new Foo; 
$bar = new Bar; 

$bar->printPHP(); 
$bar->printItem("Bar class object"); 
//Foo::printItem("Mental Case"); 

答えて

15

適切なコーディング環境でのスコープ解決演算子を使用printItemなどの静的メソッドを定義すると、あなたはFoo::printItem("Mental Case"); を使用するか、子方法でそれを呼び出すことができますします

public function printItem($string) 
{ 
    parent::printItem($string); 
    echo "This is in class Bar ". $string ."<br />"; 
} 
+0

助け:) – Trialcoder

2
<?php 
class test { 

    public function __construct() {} 

    public function name() { 
     $this->xname('John'); 
    } 

    private function showName($name) { 
     echo 'my name in test is '.$name; 
    } 
} 

class extendTest extends test { 

    public function __construct() { 
     parent::__construct(); 
    } 

    private function showName($name) { 
     echo 'my name in extendTest is '.$name; 
    } 
} 

$test = new extendTest(); 
$test->name(); 
?> 

結果: extendTestで私の名前はジョン

+1

のXName()が定義され、なぜそれが印刷した「私の名前はテストジョンのですか?」をありがとう –

-1

です:テストで私の名前はジョン

たちはpublicまたはprotectedにshowNameメソッドの可視性を変更する場合は、上記の結果はとなりますです"static"キーワードを追加して、printItemを静的メソッドにします。 このクラスのオブジェクトを作成せずにprintItem($ string)を使用できます。

<?php 

class Foo 
{ 
    static public function printItem($string) 
    { 
     echo "This is in class Foo ". $string ."<br />"; 
    } 

    public function printPHP() 
    { 
     echo "PHP is great "."<br />"; 
    } 
} 

class Bar extends Foo 
{ 
    public function printItem($string) 
    { 
     echo "This is in class Bar ". $string ."<br />"; 
    } 
}  

//$foo = new Foo; 
$bar = new Bar; 

$bar->printPHP(); 
$bar->printItem("Bar class object"); 
//Foo::printItem("Mental Case"); 
+0

このコードを実行したところ、エラーが見つかりました - 致命的なエラー静的メソッドFoo :: printItem()は行番号22 –

関連する問題