2010-08-13 42 views
1

我想將一個變量分配給PHP中的類,但是我沒有收到任何結果?在PHP中分配類變量的問題

任何人都可以提供任何幫助嗎?代碼如下所示。我試圖通過首先將其分配給類變量來回顯URL,如下所示。

class PageClass { 


    var $absolute_path = NULL; 

    function get_absolute_path(){ 

    $url = $this->absolute_path; 

    echo $url; 

    } 

} 

$page = new PageClass(); 
$page->absolute_path = "http://localhost:8888/smile2/organic/"; 

$page->get_absolute_path(); //this should echo the URL as defined above - but does not 

回答

3

它也適用於我。

Take a look at a live example of your code here.

不過,也有你應該改變你的班上有幾個事情。

首先,Garvey確實說明你不應該使用var。這是較早的PHP4,較少的OOP意識版本。而是聲明每個變量publicprivate。實際上,您應該聲明每個功能publicprivate

通常,大多數類都具有私有變量,因爲通常只需要以特定方式更改變量。爲了實現這種控制,您通常會設置多個公共方法,以允許客戶端功能僅以有限的預定方式與您的課程進行交互。

如果您有getter,您可能需要setter,因爲這些變量通常與private變量一起使用,就像我上面所描述的那樣。

最後要說明的是,名爲get的函數通常爲return的一個值。如果你想display值,這是習慣使用一個名稱,如display_pathshow_path

<?php 

    class PageClass 
    { 
     private $absolute_path = NULL; 

     public function set_absolute_path($path) 
     { 
      $this->absolute_path = $path; 
     } 

     public function display_absolute_path() 
     { 
      echo $this->absolute_path; 
     } 
    } 

$page = new PageClass(); 
$page->set_absolute_path("http://localhost:8888/smile2/organic/"); 

$page->display_absolute_path(); 
    // The above outputs: http://localhost:8888/smile2/organic/ 

// Your variable is now safe from meddling. 
// This: 
// echo $this->absolute_path; 
// Will not work. It will create an error like: 
// Fatal error: Cannot access private property PageClass::$absolute_path on ... 

?> 

Live Example Here

在網上PHP參考There's a section on classes and objects

3
class PageClass { 

    public $absolute_path = NULL; 

    function get_absolute_path(){ 
     $url = $this->absolute_path; 
     return $url; 
    } 

} 

$page = new PageClass(); 
$page->absolute_path = "http://localhost:8888/smile2/organic/"; 

echo $page->get_absolute_path(); 
1

工作正常,我。
你是否檢查過腳本和esp。有問題的代碼是否被執行?
例如向腳本添加一些無條件的調試輸出。或者安裝一個類似XDebug的調試器來遍歷代碼並檢查變量。

<?php 
class PageClass { 
    var $absolute_path = NULL; // old php4 declaration, see http://docs.php.net/oop5 

    function get_absolute_path() { // again old php4 declaration 
    $url = $this->absolute_path; 
    echo "debug: "; var_dump($url); 
    echo $url; 
    } 
} 

$page = new PageClass(); 
$page->absolute_path = "http://localhost:8888/smile2/organic/"; 

echo "debug: page->get_absolute_path\n"; 
$page->get_absolute_path();