https://github.com/niteshapte/advanced-error-exception-handler-logger-php
但我一直在犯错误
PHP致命错误:在www.example.com/application/core/ErrorExceptionHandler中找不到特征“SingletonTrait”。php第37行。
第37行是第二行
use SingletonTrait;
陈述
我只是对名称空间抱着浓厚的兴趣,然后特性就出现了!
我的代码如下……为了简洁起见,我去掉了很多代码,但完整的代码可以在上面的github URL上查看。
www.example.com/application/core/ErrorExceptionHandler.php的源代码
<?php
namespace Utilities;
use SingletonTrait;
if(!defined('DIRECT_ACCESS')) {
die("Direct access is forbidden.");
}
class ErrorExceptionHandler implements IUtilities {
// Singleton instance - the line below generates the error
use SingletonTrait;
....
}
<?php
namespace Utilities;
use FrameworkException;
if(!defined('DIRECT_ACCESS')) {
die("Direct access is forbidden.");
}
trait SingletonTrait {
.....
}
www.example.com/application/core/FrameworkException.php的源代码
<?php
namespace Utilities;
if(!defined('DIRECT_ACCESS')) {
die("Direct access is forbidden.");
}
class FrameworkException extends \Exception { }
www.example.com/application/core/IUtilities.php的源代码
<?php
namespace Utilities;
if(!defined('DIRECT_ACCESS')) {
die("Direct access is forbidden.");
}
interface IUtilities { }
www.example.com/index.php的源代码
<?php
require '../vendor/autoload.php';
use Utilities\ErrorExceptionHandler;
define("DIRECT_ACCESS", TRUE);
ErrorExceptionHandler::getInstance();
这是我在www.example.com/composer.json中看到的内容
"autoload": {
"psr-4": { "": ["application/core/", "application/model/"],
"Utilities\\": "application/core/",
"SingletonTrait\\": "application/core/",
"FrameworkException\\": "application/core/"
}
}
一旦我把它上传到我的服务器上,我就会发布
composer dump-autoload
在我的PuTTY命令行。
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
'Utilities\\' => array($baseDir . '/application/core'),
'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
'SingletonTrait\\' => array($baseDir . '/application/core'),
'Gregwar\\Captcha\\' => array($vendorDir . '/gregwar/captcha'),
'FrameworkException\\' => array($baseDir . '/application/core'),
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
'' => array($baseDir . '/application/core', $baseDir . '/application/model'),
);
我已经尽可能多地阅读了关于自动加载特性的内容,但我还没有找到答案。
我的命令行PHP版本是5.6.30。