我试图在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发布于 2010-08-13 16:25:42
它也适用于我。
但是,您应该对您的类进行一些更改。
首先,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参考中的There's a section on classes and objects。
发布于 2010-08-13 16:18:13
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(); 发布于 2010-08-13 16:19:35
对我来说很好。
您是否检查过脚本和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();https://stackoverflow.com/questions/3475054
复制相似问题