PHP中分配类变量的问题
我试图在PHP中为一个类分配一个变量,但是没有得到任何结果 有人能提供帮助吗?代码如下所示。我试图通过首先将URL分配给一个类变量来回显URL,如下所示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()
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参考中