首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中赋值类变量时出现的问题

在PHP中赋值类变量时出现的问题
EN

Stack Overflow用户
提问于 2010-08-13 16:12:44
回答 3查看 3.8K关注 0票数 1

我试图在PHP中将一个变量赋给一个类,但是我没有得到任何结果?

有人能提供任何帮助吗?代码如下所示。我尝试通过首先将URL赋给一个类变量来回显URL,如下所示。

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-13 16:25:42

它也适用于我。

但是,您应该对您的类进行一些更改。

首先,Garvey确实提出了一个很好的观点,即您不应该使用var。这是较旧的PHP4,较少考虑OOP的版本。而是将每个变量声明为publicprivate。实际上,您也应该将每个函数声明为publicprivate

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

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

最后要注意的是,名为get的函数通常会return一个值。如果要display一个值,通常使用类似display_pathshow_path的名称

代码语言:javascript
复制
<?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

票数 3
EN

Stack Overflow用户

发布于 2010-08-13 16:18:13

代码语言:javascript
复制
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(); 
票数 3
EN

Stack Overflow用户

发布于 2010-08-13 16:19:35

对我来说很好。

您是否检查过脚本和esp。有问题的代码会被执行吗?

例如,在脚本中添加一些无条件的调试输出。或者安装像XDebug这样的调试器来单步执行代码并检查变量。

代码语言:javascript
复制
<?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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3475054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档