【发布时间】:2019-11-25 18:30:12
【问题描述】:
考虑以下问题。我有 4 个文件。
sub.php
<?php
class sub extends main {
function __construct() {
parent::__construct();
echo "constructor in sub<br>";
}
}
trait.php
<?php
trait t1 {
function tProcess() {
echo "in tprocess in trait<br>";
}
}
main1.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
require_once 'sub.php';
require_once 'trait.php';
class main {
function __construct() {
echo "constructor in main<br>";
}
function process() {
echo "doing something in main<br>";
}
}
$t = new sub();
$t->process();
和main2.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
require_once 'sub.php';
require_once 'trait.php';
class main {
use t1;
function __construct() {
echo "constructor in main<br>";
}
function process() {
echo "doing something in main<br>";
}
}
$t = new sub();
$t->process();
main1 按预期工作,但 main2 给了我一个致命错误:未找到 Class 'main' 错误。仅仅包含 trait 就会改变文件包含的工作方式。
【问题讨论】:
-
什么是 t1?你是否错误地标记了你的特质?另外,你在哪里包括特质?
-
我的错,有一些复制粘贴问题,现在都更正了
-
我认为您只是有一次订购问题,但我不能 100% 确定。
-
我一开始也是这么想的,但事实并非如此,因为第一个有效(当不包括特征时)。