在PHP中分配类变量的问题

时间:2010-08-13 08:12:44

标签: php class variables

我正在尝试将一个变量分配给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 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分: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();