oop — статическое свойство PHP с расширением класса перезаписано

Пожалуйста, не могли бы вы немного помочь мне с моей проблемой?

У меня есть класс с именем Translateable, а затем описать Article и Banner, которые расширяют этот класс.

Проблема возникает, когда я делаю это:

$article = (new Article)->find(15);
$banner =  (new Banner)->find(1);

$articleTrans = $article->trans(); // method trans is method from Translateable

Когда я звоню $article->trans(); Я ожидаю вывод, как это:

App\Models\ArticleTrans
Article

но это вернуть это:

App\Models\ArticleTrans
Banner

Первый ряд в порядке, но второй, если плохо, и я не знаю, как решить эту проблему.
Мне нужно иметь $ экземпляр хранится как статическое свойство.

Не могли бы вы мне помочь?

  class Translateable extends Model {

static $transLang = null;
static $transClass = null;
static $instance = null;

public function __construct(array $attributes = array()) {

static::$transLang = App::getLocale();

parent::$transClass = static::$transClass;
parent::$instance = static::$instance;
parent::__construct($attributes);

}
/**
* get items trans
*
* @param null $lang
* @return mixed
*/
public function trans($lang = null) {
if($lang == null) {
$lang = static::$transLang;
}

echo static::$transClass;
echo class_basename(static::$instance);
die();

}
public static function find($primaryKeyVal, $columns = []) {

$tci = new static::$transClass;
$item = static::withTrans()->where(static::$instance->getTable() . '.' . static::$instance->primaryKey, '=', $primaryKeyVal)->where($tci->getTable() . '.lang', '=', static::$transLang)->first();
return $item;

}
}

class Article extends Translateable {
static $transClass = 'App\Models\ArticleTrans';

public function __construct(array $attributes = array()) {

parent::$transClass = static::$transClass;
parent::$instance = $this;

parent::__construct($attributes);

}
}

class Banner extends Translateable {

static $transClass = 'App\Models\BannerTrans';

public function __construct(array $attributes = array()) {

parent::$transClass = static::$transClass;
parent::$instance = $this;

parent::__construct($attributes);

}
}

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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