Раньше у меня было несколько классов библиотек с теми же методами. Понял, что я узнаю немного больше о двух важных аспектах кодирования; Черты и сухие.PHP traits - не может использовать метод, определенный в признаке
У меня есть следующая особенность:
<?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 (об использовании множественные черты)
Единственная разница у меня есть у меня есть use
вне моего класса из-за получения cannot use class because it is not a trait
Что я здесь отсутствует?
Хорошо так, глядя на вопрос, который я связан в моем посте я угадывание 'use' идет в определение класса, когда класс не в том же пространстве имен? –
Нет, вы помещаете его в определение класса, когда оно является _trait_, и вы хотите, чтобы этот класс использовал этот признак. Вы указываете _outside_, когда хотите использовать этот _class_ внутри своего, но вы не хотите вводить полное пространство имен класса каждый раз, когда хотите его ссылаться. –
Хорошо, спасибо! Теперь я понимаю. –