Задать вопрос
@Leopandro
Разработчик CRM/ERP систем

Как написать функции работающие с названиям переменных как названиями свойств объекта?

Суть такова: есть 3 функции для работы с картинками
public $drivePath = '@app/web/files/images/drivers/';
	public $webPath = '/web/files/images/drivers/';

	public function uploadImage()
	{
		if (!$this->image)
			return false;
		$path = Yii::getAlias($this->drivePath.$this->car_id.'/');
		if (!is_dir($path)) mkdir($path, 0777, true);
		$filename = Yii::$app->security->generateRandomString(9);
		$this->image->saveAs($path . $filename . '.' . $this->image->extension);
		$this->image = $filename . '.' . $this->image->extension;
		return true;
	}

	public function getImage()
	{
		$path = Yii::getAlias($this->webPath.$this->car_id.'/'.$this->image);
		return Html::img($path, [
			'height' => '100px',
			'width' => 'auto'
		]);
	}

	public function deleteImage()
	{
		$path = Yii::getAlias($this->drivePath.$this->car_id.'/'.$this->oldAttributes['image']);
		if (file_exists($path))
			unlink($path);
	}


Для того чтобы сделать ее более универсальной не хватает одного момента - функция каждый раз обращается к определенному свойству объекта, название этой переменной может меняться. Как сделать так чтобы он обращался к свойству допустим $this->photo_image а у нас везде $this->image. Кто то может сказать что ты можешь передать туда переменную, $this->photo_image. Но будет намного удобней если название свойства будет храниться в настройках, чем при каждом действии ее вспоминать и передавать в функцию в качестве параметра.
  • Вопрос задан
  • 136 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
SamDark
@SamDark
Yii2 core team
$class->{$propertyName}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы