我曾经有几个库类与完全相同的方法。我想更多地了解编码的两个重要方面;特质和干燥。
我有以下特点:
<?php
namespace App\Berry;
trait Lib
{
public function getIDs()
{
$oClass = new \ReflectionClass(get_called_class());
$aConstants = $oClass->getConstants();
foreach($aConstants as $sKey => $mValue)
{
if(!is_int($mValue))
{
unset($aConstants[$sKey]);
}
}
return array_values($aConstants);
}
}
以下课程:
namespace App\Berry;
use Lib;
class postType
{
const POST_TYPE_BLOG_ID = 1;
const POST_TYPE_BLOG_LABEL = __('blog', 'lib');
const POST_TYPE_PAGE_ID = 2;
const POST_TYPE_PAGE_LABEL = __('page', 'lib');
const POST_TYPE_NEWS_ID = 3;
const POST_TYPE_NEWS_LABEL = __('news', 'lib');
}
我在PicturesController
课程中这样称呼它:
$cPostTypesLibrary = new postType();
$this->set('aPostTypes', $cPostTypesLibrary->getIDs());
现在对我来说,这看起来几乎就像告诉我在docs示例#4中所做的那样(关于使用多个特征)
我唯一的区别是,由于获得了cannot use class because it is not a trait
,我的班级之外的use
我在这里缺少什么?
答案 0 :(得分:2)
你必须在类
中声明内部class postType
{
use Lib;
}
答案 1 :(得分:2)
您的类没有使用该特征,而是使用use
Lib
关键字并尝试将use
类从同一名称空间导入到,相同的命名空间。
要正确使用特征,请返回other,并查看它们的放置位置。 namespace App\Berry;
class postType
{
use Lib;
// ...
}
语句放在类定义中。在你的情况下,它看起来像这样:
var Diagram = require('./diagram');
router.post('/saveNewDiagram',function(req,res){
Diagram.save(req.body);
});