我有 3 个相互关联的文件:
class/General.class.php
class/Database.class.php
class/User.class.php
类/General.class.php 包含:
trait generalFunctions {
private $unique_number;
private $mysql_datetime;
private $mysql_date;
function __construct($unique_number, $mysql_datetime, $mysql_date) {
$this->unique_number = $unique_number;
$this->mysql_datetime = $mysql_datetime;
$this->mysql_date = $mysql_date;
}
public function encryptData ($data) {
$unique_number = $this->unique_number;
$data = $unique_number . $data;
return $data;
}
}
class General {
use generalFunctions;
}
?>
和 class/User.class.php 基本上继承自 Database 类:
class User extends Database {
use generalFunctions;
public function trialEncrypt ($data) {
// some code here which need encryptData function from General class
}
}
当我尝试使用这些类时:
<?php
include('config.php');
include('class/General.class.php');
include('class/Database.class.php');
include('class/User.class.php');
?>
我收到以下错误:
Fatal error: User has colliding constructor definitions coming from traits in /home/***/public_html/class/User.class.php on line 178
但是当我use generalFunctions;
从 User 类中删除时,一切正常。
不幸的是,我不能在General
课堂上使用函数User
。
如何解决这个问题呢?我想在类内部有General
其他类可以使用的函数,特别是从其他类扩展的类,例如User
类(从Database
类扩展)