Перейти к содержанию

Рекомендуемые сообщения

Все началось с того, что я разбирался с нововведениями версии OC 2.3 загрузки модели из лоадера....

Пример "бага":

файл конроллера:

class ControllerTest extends Controller {
	public function index() {
		$this->load->model('test');
		
		echo '<pre>';
		echo 'model_test1->method1 = ' . $this->model_test1->test1() . PHP_EOL;

		$this->load->model('test2');
		
		echo 'model_test2->method2 = ' . $this->model_test2->test2() . PHP_EOL;
		echo 'model_test1->method2 = ' . $this->model_test1->test2(). PHP_EOL;
	}
}

фйлы моделей test1 и test2

 

class ModelTest1 extends Model {
	function test1 () {
		$this->v = 'test1_1';
		return $this->v;
	}
	
	function test2 () {
		return $this->v;
	}
}
class ModelTest2 extends Model {
	function test1 () {
		return $this->v;
	}
	
	function test2 () {
		$this->v = 'test2_2';
		return  $this->v;
	}
}

Результат

Цитата

model_test1->method1 = test1_1

model_test2->method2 = test2_2

model_test1->method2 = test2_2

 

Да я знаю что никто впринципе не будет присваивать незадекларированным свойствам какие-то значения и что такого совпадения в обычной работе OC врядли возможно , но факт есть факт и подгрузка модели вроде осталось такой же и в 3 версии. 

Изменено пользователем rodigy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AWARO, да  это не общие вопросы, а больше с кодом связанно, ошибки/баги и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
24 минуты назад, rodigy сказал:

AWARO, да  это не общие вопросы, а больше с кодом связанно, ошибки/баги и т.п.

там обсуждают как раз все косяки
ещё и тут тож
https://opencartforum.com/topic/78038-3000-ili-chto-nas-zhdet/?page=14

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, rodigy сказал:

Все началось с того, что я разбирался с нововведениями версии OC 2.3 загрузки модели из лоадера....

Пример "бага":

файл конроллера:


class ControllerTest extends Controller {
	public function index() {
		$this->load->model('test');
		
		echo '<pre>';
		echo 'model_test1->method1 = ' . $this->model_test1->test1() . PHP_EOL;

		$this->load->model('test2');
		
		echo 'model_test2->method2 = ' . $this->model_test2->test2() . PHP_EOL;
		echo 'model_test1->method2 = ' . $this->model_test1->test2(). PHP_EOL;
	}
}

фйлы моделей test1 и test2

 


class ModelTest1 extends Model {
	function test1 () {
		$this->v = 'test1_1';
		return $this->v;
	}
	
	function test2 () {
		return $this->v;
	}
}

class ModelTest2 extends Model {
	function test1 () {
		return $this->v;
	}
	
	function test2 () {
		$this->v = 'test2_2';
		return  $this->v;
	}
}

Результат

 

Да я знаю что никто впринципе не будет присваивать незадекларированным свойствам какие-то значения и что такого совпадения в обычной работе OC врядли возможно , но факт есть факт и подгрузка модели вроде осталось такой же и в 3 версии. 

 

Встречал когда использовались незадекларированные свойства  и наступал на эти чужие г... грабли
Но это скажем так, можно конечно называть overload, но это  ошибка, говнокод
Писал авторам - исправляли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чет я походу ошибся, оно же в registry пишет, как и раньше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.