PHP中的怪异行为

问题描述 投票:0回答:1

最近几天,我都尝试过在线搜索此问题,但没有好运。考虑以下。我有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给我一个致命错误:找不到类'main'错误。仅包括特征就改变了文件包含的工作方式。任何有关这里发生的事情的指针/建议都值得赞赏。

php php-7 php-traits
1个回答
0
投票

是的,这只是一个包含订购的问题。这是人们使用自动装带器的众多原因之一。

<?php

error_reporting(E_ALL);
ini_set('display_errors', true);
require_once 'trait.php';

class main {
    use t1;
    function __construct() {
        echo "constructor in main<br>";
    }

    function process() {
        echo "doing something in main<br>";
    }
}

require_once 'sub.php';
$t = new sub();
$t->process();

© www.soinside.com 2019 - 2024. All rights reserved.