Раньше у меня было несколько библиотечных классов с одинаковыми методами. Я подумал, что узнаю немного больше о двух важных аспектах кодирования; Черты и СУХОЙ.
У меня есть следующая черта:
<?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());
Теперь для меня это выглядит почти так же, как сказать мне, чтобы сделать в документы пример № 4 (об использовании нескольких черт)
Единственная разница у меня есть у меня есть use
вне моего класса из-за получения не может использовать класс, потому что это не черта
Что мне здесь не хватает?
Ваш класс не использует черту, вы вместо этого используете Другой использование use
ключевое слово и пытается импортировать Lib
класс из того же пространства имен, ну, в том же пространстве имен.
Чтобы правильно использовать черты, вернитесь к документация, и посмотрите, где они находятся. use
Оператор помещается внутри определения класса. В вашем случае это будет выглядеть так:
namespace App\Berry;
class postType
{
use Lib;
// ...
}
Вы должны объявить черту внутри класс
class postType
{
use Lib;
}