如何在嵌套在函数内的类中访问变量

时间:2013-03-02 23:31:47

标签: php

PHP中的类非常新,如何从函数内的类中访问变量?

 //how can I echo the value of the title variable outside the class?
 echo $title; 
 class myClass {

  function form() {
      echo '<input type="text" value="'.$title.'" />';
   }

 }   

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

首先,您的变量$title似乎并未在您共享的代码范围内的任何位置定义。


尽管如此,我可以分享四种方法来解决这个问题。

1。将标题设为member of the class myClass,这将特定于该类的每个实例

class myClass {
    public $title = '';
  function form() {
      echo '<input type="text" value="'.$this->title.'" />';
   }

}

$myClass = new myClass();
$myClass->title = 'My title';

2。使用constant within the class,它在所有myClass类实例

上都是相同的
class myClass {
     const title = 'My title';
  function form() {
      echo '<input type="text" value="'.myClass::title.'" />';
   }

}

3。将变量传递给您将调用的函数

class myClass {
  function form($title) {
      echo '<input type="text" value="'.$title.'" />';
   }

}

$myClass = new myClass();
$myClass->form('My title');

4。像你想要的那样使用global变量。

请谨慎使用全局变量。如果您不需要解释herehere,请不要使用它们。

$title = 'My title';
class myClass {
    function form() {
        global $title; // <-- declare here that we will use the global variable $title
        echo '<input type="text" value="'.$title.'" />';
    }
}

答案 1 :(得分:4)

你可以做什么,所以能够使用外部变量而不必依赖全局变量(一种不好的做法)就是从外部传递变量。像这样:

  class myClass {

    function form($title) {
      echo '<input type="text" value="'.$title.'" />';
     }

 }   

然后你可以这样调用你的函数:

$class = new myClass();
$class->form('This is going to be the title');

Globals很糟糕,因为你创建了耦合并且你忘记了应用程序周围发生的事情。通过在一个地方修改全局变量,您可能会在其他地方损坏代码。因此,依靠封装并明确“注入”你需要的东西总是更好。

答案 2 :(得分:0)

 class myClass {
 public $title;     
  function form() {
      echo '<input type="text" value="'.$this->title.'" />';
   }

 }  

你说过,如何在一个类中访问,但在你的例子中,你的属性/变量不在类中。只是说.. ..