我想问一下,如果有办法,可以在类中使用变量,这些变量是从它中声明的。
示例:
$foo = 'bar';
class foobar{
function example(){
echo "foo{$foo}";
}
}
$foobar = new foobar;
$foobar->example();
此代码生成通知:注意:未定义的变量:foo 有没有办法让它发挥作用?还是有一些解决方法?
答案 0 :(得分:4)
您可以使用构造函数
将此参数提供给您的类class foobar{
private $foo;
public function __construct($name) {
$this->foo = $name;
}
}
然后使用它。
或者PeeHaa的含义,您可以将方法更改为
function example($param){
echo "foo{$param}";
}
并像这样称呼它
$foobar->example($foo);
答案 1 :(得分:0)
使用构造导入它或使用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';
希望对你有所帮助。
答案 2 :(得分:-2)
是添加
class foobar{
function example(){
global $foo;
echo "foo{$foo}";
}
}
**把它放在另一个班级虽然更好,或者将它传递给你正在使用的方法也更好**