OOPの基本を読んでおくべきだと思います。あなたのクラスには大きな間違いがいくつかあります。
まず第一に、コンストラクターは$email
、$role
、またはを設定しません$active
。これらのフィールドを静的として宣言しました。静的フィールドは、静的コンテキストからのみアクセスできます。コンストラクターは静的コンテキストではありません。
これらのフィールドを静的にしたい場合 (そうでない場合) は、次のように静的メソッドから設定します。
public static function setEmail($email)
{
self::$email = $email;
}
これらのフィールドが静的である理由はありません。$email
、、$role
およびそれぞれは、UserDetails クラスの特定のインスタンス$active
に関連付けられている特定のユーザーに関連付けられています。
最後に、これらのフィールドは公開しないでください。パブリック フィールドは、クラスの外部から直接アクセスできます。これは、だれでも任意のスクリプトからいつでも public フィールドの値を変更できることを意味します。フィールドをプライベートまたはプロテクトにして、パブリック ゲッター メソッドを介してアクセスする必要があります。
このクラスの基本的なスタブの例を次に示します。
<?php
class user {
private $firstName;
private $lastName;
private $email;
private $password;
private $role;
public function __construct($firstName, $lastName, $email, $password, $role)
{
$this->firstName = $firstName;
$this->lastName = $lastName;
$this->email = $email;
$this->password = $password;
$this->role = $role;
}
public function getFirstName()
{
return $this->firstName;
}
public function getLastName()
{
return $this->lastName;
}
public function getEmail()
{
return $this->email;
}
public function getRole()
{
return $this->role;
}
}
次のようにクラスを使用します。
次のように使用します。
$don_draper = new user('Donald', 'Draper, 'dondraper@gmail.com', '123xYz', 'admin');
$email = $don_draper->getEmail();