oop — черты PHP — нельзя использовать метод, определенный в черте

Раньше у меня было несколько библиотечных классов с одинаковыми методами. Я подумал, что узнаю немного больше о двух важных аспектах кодирования; Черты и СУХОЙ.

У меня есть следующая черта:

<?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 вне моего класса из-за получения не может использовать класс, потому что это не черта

Что мне здесь не хватает?

1

Решение

Ваш класс не использует черту, вы вместо этого используете Другой использование use ключевое слово и пытается импортировать Lib класс из того же пространства имен, ну, в том же пространстве имен.

Чтобы правильно использовать черты, вернитесь к документация, и посмотрите, где они находятся. use Оператор помещается внутри определения класса. В вашем случае это будет выглядеть так:

namespace App\Berry;

class postType
{
use Lib;
// ...
}
2

Другие решения

Вы должны объявить черту внутри класс

class postType
{
use Lib;
}
2

По вопросам рекламы [email protected]