0

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.'" />';
   }

 }   

谢谢您的帮助

4

3 回答 3

4

首先,您的变量$title似乎没有在您共享的代码范围内的任何地方定义。


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

1.通过将title作为类的成员 myClass,这对于该类的每个实例都是特定的

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

}

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

2.通过在类中使用常量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你想要做的变量。

请谨慎使用全局变量。如果您不需要此处此处的说明,请不要使用它们。

$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.'" />';
    }
}
于 2013-03-02T23:42:13.207 回答
4

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

  class myClass {

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

 }   

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

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

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

于 2013-03-02T23:55:58.857 回答
0
 class myClass {
 public $title;     
  function form() {
      echo '<input type="text" value="'.$this->title.'" />';
   }

 }  

您说,如何在类中访问,但在您的示例中,您的属性/变量不在类中。只是在说..

于 2013-03-02T23:34:23.217 回答