我正在尝试将一个变量分配给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
答案 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意识版本。而是声明每个变量public
或private
。实际上,您应该声明每个函数public
或private
。
通常,大多数类都有私有变量,因为您通常只想以特定方式更改变量。要实现此控制,通常需要设置几个公共方法,以允许客户端函数仅以受限制的预定方式与您的类进行交互。
如果您有getter
,则可能需要setter
,因为这些变量通常与private
变量一起使用,如上所述。
最后要注意的是,名为get
的函数通常为return
一个值。如果您想要display
一个值,则通常使用display_path
或show_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 ...
?>
在线PHP参考中的
答案 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();