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.'" />';
}
}
感谢您的帮助
答案 0 :(得分:4)
首先,您的变量$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
变量。请谨慎使用全局变量。如果您不需要解释here和here,请不要使用它们。
$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.'" />';
}
}
你说过,如何在一个类中访问,但在你的例子中,你的属性/变量不在类中。只是说.. ..