Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] объясните код


fanatic

Recommended Posts

здравствуйте.
если не сложно, объясните следующую строку
$this->language->load(‘product/category’);
насколько я знаю, $this предоставляет доступ к методам и свойствам в контексте класса. Допустим, вышеприведенная строка используется в классе ControllerProductCategory который наследуется от Controller, но в этих классах нет свойствв language. Или я что-то неправильно понимаю?

Надіслати
Поділитися на інших сайтах

// Language    
$language = new Language($languages[$code]['directory']);
$language->load($languages[$code]['filename']);    
$registry->set('language', $language);

А здесь есть

Надіслати
Поділитися на інших сайтах

$this->{Подключить класс языка из папки system\library\language.php}language->{public function load в этом классе подгружает указанный каталог\файл для загрузки языковых переменных из него в контроллер}load(‘product/category’);

  • +1 1
Надіслати
Поділитися на інших сайтах

// Language    
$language = new Language($languages[$code]['directory']);
$language->load($languages[$code]['filename']);    
$registry->set('language', $language);

А здесь есть

 

я знаю, что здесь есть, я не пойму, как в контроллере появляется  возможность обращаться к language при помощи $this

Надіслати
Поділитися на інших сайтах

Это класс регистра:

final class Registry {
	private $data = array();

	public function get($key) {
		return (isset($this->data[$key]) ? $this->data[$key] : NULL);
	}

	public function set($key, $value) {
		$this->data[$key] = $value;
	}

	public function has($key) {
    	return isset($this->data[$key]);
  	}
}

а теперь посмотрите index.php как он обрабатывает обращения + в startup.php - подключаются нужные классы.

Надіслати
Поділитися на інших сайтах

Васо, првильно ли я понял - когда в методе класса  ControllerProductCategory мы обращаемся к несуществующему свойству   $this->language, срабатывает __get родительского класса (abstract class Controller), который возвращает экземпляр класса Language, а затем запускаем метод load этого класса $this->language->load(‘product/category’);

  • +1 1
Надіслати
Поділитися на інших сайтах

О, мама-миа, fanatic, зачем вам это нужно?

вы о чем?

Надіслати
Поділитися на інших сайтах

Васо, првильно ли я понял - когда в методе класса  ControllerProductCategory мы обращаемся к несуществующему свойству   $this->language, срабатывает __get родительского класса (abstract class Controller), который возвращает экземпляр класса Language, а затем запускаем метод load этого класса $this->language->load(‘product/category’);

Понятия не имею, о чем Вы  :-D  я самоучка, и вижу всю логику немного другими глазами, описывать же терминологией ВУЗ-а - не имею возможности, но примерно по такой логике, что Вы описали.

Надіслати
Поділитися на інших сайтах

здравствуйте.

если не сложно, объясните следующую строку

$this->language->load(‘product/category’);

насколько я знаю, $this предоставляет доступ к методам и свойствам в контексте класса. Допустим, вышеприведенная строка используется в классе ControllerProductCategory который наследуется от Controller, но в этих классах нет свойствв language. Или я что-то неправильно понимаю?

хороший вопрос

дело в родителе и его Magic Methods

abstract class Controller {
    protected $registry;    
    protected $id;
    protected $layout;
    protected $template;
    protected $children = array();
    protected $data = array();
    protected $output;
    
    public function __construct($registry) {
        $this->registry = $registry;
    }
    
    public function __get($key) {
        return $this->registry->get($key);
    }
    
    public function __set($key, $value) {
        $this->registry->set($key, $value);
    }

т.е. по сути

$this->language->load(‘product/category’);

 равнозначно

$this->registry->get('language')->load(‘product/category’);
  • +1 2
Надіслати
Поділитися на інших сайтах

 

хороший вопрос

дело в родителе и его Magic Methods

abstract class Controller {
    protected $registry;    
    protected $id;
    protected $layout;
    protected $template;
    protected $children = array();
    protected $data = array();
    protected $output;
    
    public function __construct($registry) {
        $this->registry = $registry;
    }
    
    public function __get($key) {
        return $this->registry->get($key);
    }
    
    public function __set($key, $value) {
        $this->registry->set($key, $value);
    }

т.е. по сути

$this->language->load(‘product/category’);

 равнозначно

$this->registry->get('language')->load(‘product/category’);

Спасибо, я так и понял (разобрал что происходит от indexa до контроллера)

  • +1 1
Надіслати
Поділитися на інших сайтах

Подскажите как в массиве сделать выбор первой записи?

Пытаюсь в карусели вывести описание баннера. В файле catalog/view/theme/default/template/module/carousel.tpl в самом начале добавляю код

<?php echo $banners['title']; ?>

Получается ошибка Notice: Undefined index: title in/catalog/view/theme/default/template/module/carousel.tpl on line 1

 

В самом файле catalog/view/theme/default/template/module/carousel.tpl есть такой код

<?php foreach ($banners as $banner) { ?>
<li><a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a></li>
<?php } ?>

Здесь получается идет перебор массива. Как сделать вывод только 1 раз вначале заголовка title ?

 

Надіслати
Поділитися на інших сайтах


так пробовали?

<?php echo $banners[0]['title']; ?>

Спасибо! Заработало.

Только я немного с полем ошибся. Получается что берется заголовок картинки баннера, а не название самого баннера.

Название баннера хранится в переменной $name в файле /admin/view/template/design/banner_form.tpl

Непонятно тогда что прописать в catalog/view/theme/default/template/module/carousel.tpl чтобы при отображении появилось значение $name

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.