我基本上知道php,但我对所有类的东西都是新手。现在 - 喜欢它。 这是我的问题:
我正在编写课程来完成帐户管理的所有工作。 (例如,创建新帐户,获取帐户详细信息,检查帐户是否存在....) 在该类中,我需要做一些MySQL请求。因此,我使用了medoo-class(http://www.medoo.in)。
class acc{
// Attributes
public static $account;
public $pw;
protected $error;
public function acc_exist() {
$database = new medoo();
$acc_count = $database->count("table_accounts", ["column_account" => acc::$account]);
if ($acc_count == 0) {return true;} else {$this->error .= "Account exists already!";};
}};
请注意以下内容:
$database = new medoo();
和
$acc_count = $database->count("table_accounts", ["column_account" => acc::$account]);
这里我带来了medoo。并且[" column_account" => acc :: $ account] acctually工作。正如我在其他一些帖子中看到的那样,我将$ accounts 公共静态。
现在我这样称呼我的班级:
$my_acc = new acc();
$my_acc->account = 'Luci';
$my_acc->acc_exist();
我需要这样工作。在我的其余代码的上下文中,执行一些acc($ account)很困难。
但正如我所料,我得到一个错误:
严格标准:将静态属性acc :: $ account作为非静态访问
清楚我的静态保存了var的值。所以我需要一些其他的方式。有人有想法吗?
最好,Lox
答案 0 :(得分:1)
我认为您不需要将$account
视为静态,这对于您可能会使用此代码的方式没有意义,请尝试使用{{ 1}}然后使用public $account;
所以:
["column_account" => $this->account]
以下是有关如何正确使用class acc{
// Attributes
public $account;
public $pw;
protected $error;
public function acc_exist() {
$database = new medoo();
$acc_count = $database->count("table_accounts", ["column_account" => $this->account]);
if ($acc_count == 0) {return true;} else {$this->error .= "Account exists already!";};
}};
的更多信息:Static Keyword in PHP
答案 1 :(得分:0)
您正在调用一个不存在的变量。
您将$ accout声明为public和static。
但您尝试拨打$ account。
替换:
$my_acc->account = 'Luci';
使用:
$my_acc->accout = 'Luci';
答案 2 :(得分:0)
Vex是对的。取消PaintEventArgs
关键字并改为使用static
。
贝斯茨,
乙