PHP中分配类变量的问题

PHP中分配类变量的问题,php,class,variables,Php,Class,Variables,我试图在PHP中为一个类分配一个变量,但是没有得到任何结果 有人能提供帮助吗?代码如下所示。我试图通过首先将URL分配给一个类变量来回显URL,如下所示 class PageClass { var $absolute_path = NULL; function get_absolute_path(){ $url = $this->absolute_path; echo $url; } } $page = new PageClass()

我试图在PHP中为一个类分配一个变量,但是没有得到任何结果

有人能提供帮助吗?代码如下所示。我试图通过首先将URL分配给一个类变量来回显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
对我来说很好。
您是否已检查脚本,尤其是相关代码是否已执行?
例如,向脚本添加一些无条件调试输出。或者安装一个调试器,以便逐步完成代码并检查变量

<?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();
对我来说很好。
您是否已检查脚本,尤其是相关代码是否已执行?
例如,向脚本添加一些无条件调试输出。或者安装一个调试器,以便逐步完成代码并检查变量

<?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();
它也适用于我

然而,关于你的班级,有一些事情你应该改变

首先,Garvey确实提出了一个很好的观点,即您不应该使用
var
。这是较旧的PHP4,不太关注OOP的版本。而是声明每个变量
公共
私有
。事实上,您还应该声明每个函数
public
private

通常,大多数类都有私有变量,因为您通常只希望以特定的方式更改变量。为了实现这种控制,您通常设置几个公共方法,以允许客户端函数仅以受限的预定方式与类交互

如果您有一个
getter
,您可能需要一个
setter
,因为它们通常与
私有
变量一起使用,就像我上面描述的那样

最后要注意的是,名为
get
的函数通常
返回一个值。如果要
显示
值,通常使用
显示路径
显示路径
等名称:

<?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 ...

?>

在在线PHP参考中。

它也适用于我

然而,关于你的班级,有一些事情你应该改变

首先,Garvey确实提出了一个很好的观点,即您不应该使用
var
。这是较旧的PHP4,不太关注OOP的版本。而是声明每个变量
公共
私有
。事实上,您还应该声明每个函数
public
private

通常,大多数类都有私有变量,因为您通常只希望以特定的方式更改变量。为了实现这种控制,您通常设置几个公共方法,以允许客户端函数仅以受限的预定方式与类交互

如果您有一个
getter
,您可能需要一个
setter
,因为它们通常与
私有
变量一起使用,就像我上面描述的那样

最后要注意的是,名为
get
的函数通常
返回一个值。如果要
显示
值,通常使用
显示路径
显示路径
等名称:

<?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 ...

?>

在在线PHP参考中