Автор Тема: MVC framework #7 – Config(2)  (Прочетена 1659 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

metost

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 13
  • -Получени: 41
  • Публикации: 764
MVC framework #7 – Config(2)
« -: 24 Януари 2013, 04:15:25 »
** Тази тема дискутира:: MVC framework #7 – Config(2)**
Автор: gatakka
« Последна редакция: 16 Април 2015, 22:47:59 от Avalanche »
(рɐǝɥ ɹпoʎ uɹпʇ ʇ,uoр)

borisov87

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 40
Re: MVC framework #7 – Config(2)
« Отговор #1 -: 05 Март 2013, 10:45:21 »
Не мога да разбера тосзи фрагмент
Код: PHP
  1. public function run() {
  2. //if config folder is not set, use defaultone
  3. if ($this->_config->getConfigFolder() == null) {
  4. $this->setConfigFolder(../config’);
  5. }
  6. }
защо логиката е вътре в метода run(), смисъл нали код който е в тялото на даден метод се изпълнява само когато викаме този метод? Та как тази проверка ще стане автоматично като никъде не викаме метода run

borisov87

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 40
Re: MVC framework #7 – Config(2)
« Отговор #2 -: 05 Март 2013, 10:48:18 »
Оф грешка сега видях че ние метода run си го викаме в индекс файла

borisov87

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 40
Re: MVC framework #7 – Config(2)
« Отговор #3 -: 09 Март 2013, 13:51:28 »
Отново въпрос
в клипа ванката вика метода
$app->getConfig()->app
 и работи преди да е извикал метода run()
при мен работи само след като извикам метода run и е логично щото нали метода run държи пътя към default foldera config, а гледам че при него метода run() е след
$app->getConfig()->app и кода пак си работи ? Е как става тази магия :D

borisov87

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 40
Re: MVC framework #7 – Config(2)
« Отговор #4 -: 15 Юли 2013, 14:31:08 »
<?php
error_reporting
(E_ALL E_NOTICE);
include 
'../../bf/App.php';
$app= \BF\App::getInstance();
echo 
$app->getConfig()->app;
привет защо ехото ми връща цифрата 1 вместо array?
$config= \BF\Config::getInstance();
echo $config->app;

с това няма проблем връща ми array но с функцията по-горе не сработва

relax4o

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 14
Re: MVC framework #7 – Config(2)
« Отговор #5 -: 29 Август 2013, 06:57:29 »
Отново въпрос
в клипа ванката вика метода
$app->getConfig()->app
 и работи преди да е извикал метода run()
при мен работи само след като извикам метода run и е логично щото нали метода run държи пътя към default foldera config, а гледам че при него метода run() е след
$app->getConfig()->app и кода пак си работи ? Е как става тази магия :D

Не се заблуждавай. Забелязах, че докато обясняваше защо не е хубаво тази логика да е в конструктора, то той именно там беше сложил веднъж тази логика. След това я копира в run(), но забрави да я премахне от конструктора. Така че не се заблуждавай. Логиката трябва да си стои в run(), защото преди да извикаш run() може да искаш да сетнеш нов конфигурационен файл и чак след това да стартираш приложението.

opelcrumper

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 5
Re: MVC framework #7 – Config(2)
« Отговор #6 -: 26 Януари 2014, 15:57:50 »
Здравейте,

Имам малък проблем със сработването на този фрагмент и това видео. Правя всичко 1:1 спрямо видеото, но когато се опитам да изпълня метода "run" получавам няколко грешки.

Първо да покажа, в index.php - тестовия файл имам следния код:
include '../../framework/App.php';

$app = \framework\App::getInstance();
echo $app->getConfig()->app;
$app->run();

Спрямо видеото - оставям в конструктора на класа App.php следните неща:
\framework\Loader::registerNamespace('framework', dirname(__FILE__) . DIRECTORY_SEPARATOR);
\framework\Loader::registerAutoload();
$this->_config = \framework\Config::getInstance();
if($this->_config->getConfigFolder() == null){
    $this->setConfigFolder('../config');
}

Грешките са:
Notice: Trying to get property of non-object in C:\wamp\www\test\public\index.php on line 7
където кода е:
echo $app->getConfig()->app;

И следващата грешка е: Fatal error: Using $this when not in object context in ....
където кода е:
public static function run(){
        if($this->_config->getConfigFolder() == null){
            $this->setConfigFolder('../config');
        }
}



И в метода run() това, което написах по-горе.

Пробвах да проследя логиката, всичко изглежда нормално и трябва да работи... Спрямо видеото и коментарите тук от форума не мога да се ориентирам - какво трябва да остане от логиката в конструктора на App.php и какво трябва да се изнесе в метода run()?
Може ли някой да "удари" едно рамо, че това ме спира за нормалното продължаване към следващите видео уроци?  :-\

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2590
  • meow
Re: MVC framework #7 – Config(2)
« Отговор #7 -: 26 Януари 2014, 16:45:20 »
Здрасти,

подозирам че си с проблема на 90% от хората, дето разглежда въпросната серия уроци и то е версията ти на PHP. С коя точно си ти? А за фаталната грешка то си пише, ползваш $this в обхвата на статична функция. Трябват ти малко основи по OOP, но за статичните методи се ползва self::, вместо $this->. В последното видео Иван е публикувал крайния код и гледам, че функцията в последствие е променена да не е статична.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

opelcrumper

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 5
Re: MVC framework #7 – Config(2)
« Отговор #8 -: 26 Януари 2014, 17:14:43 »
Току що свалих source кода и сравних - и двата файла са 1:1  :)

Версията ми на php e 5.4.3.  ???

EDIT:
Промених метода run() да не е статичен и... (не знам дали фикснах проблема), но ми излезнаха други нотиси.  ;D но си е напредък  8) Мерси колега!
« Последна редакция: 26 Януари 2014, 17:20:35 от opelcrumper »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2590
  • meow
Re: MVC framework #7 – Config(2)
« Отговор #9 -: 26 Януари 2014, 17:27:04 »
И аз седнах да гледам видеото чак толкова да се учудя. Гледам че си избрал друго име за фрейма - няма нищо лошо, внимавай само да ги оплетеш някъде. Ако не изчезнат и новоизлезлите предупреждения, пиши пак.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

opelcrumper

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 5
Re: MVC framework #7 – Config(2)
« Отговор #10 -: 26 Януари 2014, 17:50:56 »
Няма проблем, с промяната на името на framework-a. Нямам нито 1 ред copy/paste. Целта ми е да го разбера и съм започнал уроците от самото начало, 1 по 1.

Не знам само защо се скриват нотисите (notice) за видеата, чрез error_reporting. Но засега продължавам към следващите уроци...  :)

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3075
Re: MVC framework #7 – Config(2)
« Отговор #11 -: 26 Януари 2014, 17:54:52 »
Каква машина, каква ос, версия на php ?  В php.ini пуснал ли си display_errors?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2590
  • meow
Re: MVC framework #7 – Config(2)
« Отговор #12 -: 26 Януари 2014, 18:03:55 »
@HD Човекът искаше да каже, че не разбира защо в проекта е сложено:
Код: PHP
  1. error_reporting(E_ALL ^ E_NOTICE);
Което напрактика показва всички грешки, освен предупрежденията (notice). Иван така е преценил, може би го е описал в някои от най-първите уроци.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!