我想问一下,如果有办法在一个类中使用从它声明的变量。
例子:
$foo = 'bar';
class foobar{
function example(){
echo "foo{$foo}";
}
}
$foobar = new foobar;
$foobar->example();
此代码产生一个通知:注意:未定义的变量: foo 有没有办法让它工作?还是有一些解决方法?
您可以使用构造函数将此参数提供给您的类
class foobar{
private $foo;
public function __construct($name) {
$this->foo = $name;
}
}
然后使用它。
或者 PeeHaa 的意思是,您可以将方法更改为
function example($param){
echo "foo{$param}";
}
并这样称呼它
$foobar->example($foo);
使用构造来导入它或使用 global 关键字。你可以这样做:
$var = 'value';
class foobar {
private $classVar;
function __construct($param) {
$this->classVar = $param;
}
}
并像这样启动它:
$var = 'value';
$inst = new foobar($var);
或者您可以使用全局变量(在这种情况下我不建议这样做)并执行以下操作:
$var = 'value';
class foobar {
global $var;
function show() {
echo $var;
}
}
更新:要在另一个类中使用一个类,如果在整个实现过程中需要它的实例,则可以在构造函数中对其进行实例化,或者仅在需要时才对其进行实例化。
要在构造函数中创建对另一个类的引用,请执行以下操作:
class class1 {
private $someVar;
function __construct() {
$this->someVar = 'success';
}
function doStuff() {
return $this->someVar;
}
}
class class2 {
private $ref;
private $val;
function __construct() {
$this->ref = new class1();
$this->val = $this->ref->doStuff();
// $this->val now holds the value 'success'
}
}
$inst = new class2(); // upon calling this, the $val variable holds the value 'success'
或者您可以仅在需要时调用它,如下所示:
class class1 {
private $someVar;
function __construct() {
$this->someVar = 'success';
}
function doStuff() {
return $this->someVar;
}
}
class class2 {
private $ref;
private $val;
function __construct() {
// do something
}
function assign() {
$this->ref = new class1();
$this->val = $this->ref->doStuff();
// $this->val now holds the value 'success'
}
}
$inst = new class2(); // the $val variable holds no value yet
$inst->assign(); // now $val holds 'success';
希望对您有所帮助。
是的添加
class foobar{
function example(){
global $foo;
echo "foo{$foo}";
}
}
** 将它放在另一个类中更好,或者将它传递给您正在使用的方法也更好**