我遇到这种情况:
class User extends Database {
public function validateLogin ($email, $password) {
// some code here
}
}
class General {
public function encryptData ($data) {
// some code here
}
}
需要使用$password
中的validateLogin
函数对来自encryptData
的{p> class General
进行加密,问题是class User
已经扩展/继承class Database
PHP不支持多重继承,对吧?如何解决这种情况?
谢谢
答案 0 :(得分:1)
您可以将validateLogin
注入public function validateLogin ($email, $password, General $General) {
$encPassword = $General->encryptData($password);
}
方法
#printEmilCountDiv, #printEmilCountDiv *{
list-style-type:none;
margin:0;padding:0;
}
#printEmilCountDiv ul{display:inline-block;vertical-align:top; border:solid 1px red;}
答案 1 :(得分:1)
在基类上使用某种基本方法,如下所示:
class User extends Database {
public function validateLogin ($email, $password) {
$encrypted = $this->encryptData($password);
}
}
然后您可以在子类中使用该工厂方法:
class UnsecuredUser extends Database {
protected function encryptData($data) {
return $data;
}
public function validateLogin ($email, $password) {
$encrypted = $this->encryptData($password);
}
}
如果需要,您甚至可以覆盖它:
<img>
答案 2 :(得分:1)
您可以尝试将其设置为静态方法,并在不实例化General对象的情况下直接调用它:
class General {
public static function encryptData ($data) {
// some code here
}
}
class User extends Database {
public function validateLogin ($email, $password) {
$encrypted = \General::encryptData($password);
//more code here
}
}
答案 3 :(得分:1)
如果您使用的是PHP 5.4 +,则可以使用traits。
示例:
trait encryptDataFunctions {
public function encryptData($data) {
// some code here
}
}
然后在你的课程中使用它:
class General {
use encryptDataFunctions;
}
class User extends Database {
use encryptDataFunctions;
public function validateLogin ($email, $password) {
$encrypted = $this->encryptData($password);
//more code here
}
}