2012-03-05 61 views
0

我在理解OOP中的範圍時遇到了一些麻煩。我想要的是$ foo-> test_item()打印 「的TestString」 ......現在它只是失敗:PHP基礎知識:無法處理類內的範圍

警告:缺少參數1測試:: test_item()

謝謝很多!

<?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 2012-03-05 13:53:15

1

函數的參數不能爲 「$這個 - > VAR」,

改變你的類像

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

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

閱讀該Object-Oriented PHP for Beginners

2

那麼,你已經聲明瞭一個方法,期望一個參數,這是缺少的。你應該這樣做:

$foo->test_item("Something"); 

至於$this->,那裏面的類方法。

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

發生了什麼事還有就是foo- $> test_item()期待的東西作爲參數傳遞,因此,例如

$foo->test_item("Hello"); 

會在這種情況下是正確的。這將打印Hello

,你可能會奇怪,爲什麼它不打印teststring。這是因爲,通過調用

print $vari; 

你只打印已傳遞至$ foo-變量> test_item()

但是,如果不是你做

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

實際上,您將打印類別property $ vari的值。使用$ this - > ...來調用該類範圍內的函數或變量。如果你嘗試沒有$這個 - >然後PHP將查找功能的當地範圍