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.'" />';
}
}
谢谢您的帮助
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.'" />';
}
}
谢谢您的帮助
首先,您的变量$title
似乎没有在您共享的代码范围内的任何地方定义。
尽管如此,我可以分享四种方法来处理这个问题。
myClass
,这对于该类的每个实例都是特定的class myClass {
public $title = '';
function form() {
echo '<input type="text" value="'.$this->title.'" />';
}
}
$myClass = new myClass();
$myClass->title = 'My title';
myClass
,在所有类实例上都是相同的class myClass {
const title = 'My title';
function form() {
echo '<input type="text" value="'.myClass::title.'" />';
}
}
class myClass {
function form($title) {
echo '<input type="text" value="'.$title.'" />';
}
}
$myClass = new myClass();
$myClass->form('My title');
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.'" />';
}
}
您可以做什么,以便能够使用外部变量,而不必依赖全局变量(一种不好的做法),就是从外部传递变量。像这样:
class myClass {
function form($title) {
echo '<input type="text" value="'.$title.'" />';
}
}
然后你可以像这样调用你的函数:
$class = new myClass();
$class->form('This is going to be the title');
全局变量很糟糕,因为您创建了耦合并且您无法跟踪应用程序周围发生的事情。通过在一个地方修改全局变量,您可能会在其他地方损害代码。因此,最好依赖封装,并明确地“注入”你需要的东西。
class myClass {
public $title;
function form() {
echo '<input type="text" value="'.$this->title.'" />';
}
}
您说,如何在类中访问,但在您的示例中,您的属性/变量不在类中。只是在说..