Вопросы по устройству simpleMVC

1. Как будет функция "Merger::mergeRecursivelyWithReplace" реагировать на добавление новых полей в массив файла web-local.php? Добавит ли она новые поля в результирующий массив или проигнорирует?
2. Если клас наследуется от класса, к которому была применена конструкция use (для использования в нем других объектов из других пространств имён), нужно ли и ему (классу-наследнику) прописывать те же самые конструкции use? (практика показала что да, нужно, так что в принципе этот вопрос я оставил просто для справки, если кому-то будет нужно уточнить).

Ссылка на главную страницу по изучению фреймворка simpleMVC http://fkn.ktu10.com/?q=node/9429

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

поправьте ключевые слова.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Если клас наследуется от класса, к которому была применена конструкция use (для использования в нем других объектов из других пространств имён), нужно ли и ему (классу-наследнику) прописывать те же самые конструкции use?

Вообще нет, если речь идёт о разных файлах. Другое дело, если вы в классе-наследнике обращаетесь импортированным из других пространств с помощью use сущностям.

Если бы это было бы не так, то при использовании фреймворков, вам приходилось бы тащить в каждый файл огромное число инструкций импорта.

(практика показала что да, нужно, так что в принципе этот вопрос я оставил просто для справки, если кому-то будет нужно уточнить)

пример в студию, пожалуйста)

_____________
матфак вгу и остальная классика =)

Voronve's picture

Да, как оказалось, это необязательно в большинстве случаев. Но 1 такой все же нашелся. Его то я и имел в виду. У нас есть абстрактный класс User в файле которого подключается класс Конфига: use ItForFree\SimpleMVC\Config; От него унаследовн мой класс CMSUser. Так вот, если в классе-наследнике не прописать точно такой же use как в классе User то при попытке залогиниться, у меня выводится следующее предупреждение: Warning: require(/var/www/FromCMStoMVC/web/../application/models/Config.php): failed to open stream: No such file or directory in /var/www/FromCMStoMVC/web/autoload.php on line 23

vedro-compota's picture

ак вот, если в классе-наследнике не прописать точно такой же use как в классе User то при попытке залогиниться, у меня выводится следующее предупреждение: Warning: require(/var

...

дайте ссылку на ваш класс-наследник на гитхабе

_____________
матфак вгу и остальная классика =)

Voronve's picture
vedro-compota's picture

Дело в том, что ваш класс сам обращается к классу Config,
а так как этот класс из другого пространства,
то вам и приходится импортировать его с помощью use:

protected function checkAuthData($login, $pass){
  $result = false; 
  if( $login == Config::get('core.admin.username') ){

Другое дело, если бы какой-то из методов родителя
обращался, а ваш класс нет -- тогда вы наследовали бы
функционал этого метода без всякого импорта в файле класса потомка.

_____________
матфак вгу и остальная классика =)

Voronve's picture

Спасибо, теперь все понятно!

vedro-compota's picture

просьба из основного поста поставить ссылку на главную страницу о SimpleMVC

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Как будет функция "Merger::mergeRecursivelyWithReplace" реагировать на добавление новых полей в массив файла web-local.php? Добавит ли она новые поля в результирующий массив или проигнорирует?

а что показывает ваш анализ кода или хотя бы эксперимент?) можно вынести в отдельный вопрос.

_____________
матфак вгу и остальная классика =)

Voronve's picture

Вопрос снимается ) Ответ - да добавит ) Провел експеримент и в целом разобрался с кодом функции )

vedro-compota's picture

Прокомментируйте, пожалуйста, почему в одном случае мы используем переменную напрямую - $tableName, а в другом через функцию bindValue - :id;

лучше в отдельный вопрос + ссылки на файл (на гитхаб) где это наблюдается.

_____________
матфак вгу и остальная классика =)