代码之家  ›  专栏  ›  技术社区  ›  Mazatec

在PHP中分配类变量的问题

  •  1
  • Mazatec  · 技术社区  · 16 年前

    我试图在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
    
    3 回复  |  直到 10 年前
        1
  •  3
  •   Peter Ajtai    16 年前

    Take a look at a live example of your code here.

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

    首先,加维确实提出了一个你不应该使用的观点 var public 或 private . 实际上,您应该声明每个函数 公众的 或 私有的

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

    如果你有 getter setter ,因为它们通常与 私有的 变量,就像我上面描述的。

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

    Live Example Here

    There's a section on classes and objects

        2
  •  3
  •   Alex Pliutau    16 年前
    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
  •  1
  •   VolkerK    16 年前


    你检查过脚本,特别是有问题的代码是否被执行了吗?
    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();