2012-03-05 13 views
0

OOPのスコープを理解するのにいくつか問題があります。PHPの基本:クラス内のスコープを扱うことができません

警告:テストのために、引数1がありません:: test_item()

おかげで私が欲しいのは$ foo->はtest_item()版画 "たTestStringは" ...今、それだけで失敗するということですたくさん!

<?php 

class testing { 
    public $vari = "teststring"; 
    function test_item($vari){ //$this->vari doesn't work either 
     print $vari; 
    } 
} 

$foo = new testing(); 
$foo->test_item(); 

?> 

答えて

4

test_item()は次のようになります。

function test_item() { 
    print $this->vari; 
} 

$variをパラメータとして渡す必要はありません。

+0

@Georgoこれはとても知的ではないことを知っています。私はそれで何かをテストしたいです... – Jurudocs

1

関数のパラメータは、あなたの

class testing { 
    public $vari = "teststring"; 
    function test_item(){ //$this->vari doesn't work either 
     print $this->vari; 
    } 
} 

$foo = new testing(); 
$foo->test_item(); 

のようなクラスとは、読んで "の$ this - > VAR"、

変化としてすることはできません。このObject-Oriented PHP for Beginners

2

まあ、欠落している引数が必要なメソッドを宣言しました。あなたはする必要があります:

$foo->test_item("Something"); 

については、それはクラスメソッドの内側になります。そこに何が起こっている

function test_item(){ 
    print $this->vari; 
} 
0

です$ foo-> test_item()の例

ため
$foo->test_item("Hello"); 

は、このケースで正しいでしょうので、引数として渡された何かを期待しています。これは、teststringを印刷していない理由を不思議に思われるかもしれ、Hello

しかしを印刷します。

print $vari; 

を呼び出すことによって、あなただけの)

代わりにあなたが

function test_item(){ //notice I've removed the argument passed to test_item here... 
    print $this->vari; 
} 

を行う場合は、あなたが代わりに意志を$ foo-> test_item(に渡された変数を印刷しているためですクラスproperty $ variの値を出力してください。 $ this - > ...を使って、クラスのスコープ内の関数または変数を呼び出します。 $ this->を使わないで試してみると、PHPは関数内のその変数を探しますスコープ

関連する問題