这是我的父类:
class Model extends CI_Model
{
protected $table, $idField='id';
public $fields;
function __construct()
{
parent::__construct();
$this->fields = new ValFieldGroup();
}
//Other Code
}
这是 ValFieldGroup 类的代码:
class ValFieldGroup
{
private $fields = array();
public function add($name, $rules = '', $label = '')
{
$this->fields[$name] = new ValField($name, $rules, $label);
}
public function __get($name)
{
if (isset($this->fields[$name]))
return $this->fields[$name];
else
return false;
}
public function __set($name, $value)
{
$this->fields[$name] = $value;
}
public function getAll()
{
return $this->fields;
}
}
这是我遇到错误的子类:
class User extends Model
{
function __construct()
{
parent::__construct();
$this->fields.add('first', 'required', 'First Name');
// Snip
}
// Snip
}
运行此代码时出现以下错误:
Fatal error: Call to undefined function add() in \models\user.php..
User
类中的这一行:
$this->fields.add('first', 'required', 'First Name');
当我在这一行之前执行 print_r($this->fields)
时,我得到:
ValFieldGroup Object ( [fields:private] => Array ( ) )
很明显类正在设置,但我不能使用我想要的功能..我做错了什么?
最佳答案
除非 add
是全局范围的函数,否则我会说 fields.add()
应该是 fields->add()
。点是 PHP 中的字符串连接运算符。
关于PHP 面向对象问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680432/