Титла: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 20, 2008, 00:01 Код И Код При мене горния с кейсовете не суичва файла и се сгомнясва интерфейса. Аз ли греша някъде? Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 20, 2008, 01:13 Аз не виждам проблем в работата на горния код - ОК си работи.
Само не ми харесва как го правиш - имаш прекалено много повторение на код ;) Код
Освен това проверяваш само за първия препдпочитан език, а не за всички... Код
И последно - преди време ти бях писал едно лично съобщение за сайта, който правиш - прочете ли го? ;) Титла: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 20, 2008, 09:33
При мене първия код не ми включва файловете а втория си работи. Днес ще направя още една проверка която се сетих като се събудих днес сутринта. От 6 до 8 часа циклих на тоя проблем и когато тръгнах да ставам от компютъра писах по форумите. ДА, да, да и затова съм се разбързал да то преработвам. Това е "парче лайно" от тоя сайт за който говориш. Титла: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 20, 2008, 12:25 Код Това е кода който сложих в сайта си сега и работи!!! Благодарности! Даже ако в хедърите браузъра прати de, fr-bl, ru, bg, en скрипта превключва на първия срещтнат "познат" език. Титла: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 20, 2008, 14:15
Това е крайния код на триезичен сайт!!! Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 20, 2008, 15:09 Малко чистота на кода
![]() Не използвай това:
Пълни ти се лог-а с предупреждения и забавяш работата. Трябва да е:
Същото се отнася за
=>
И парчето:
трябва да се намира след всички опити за установяване на езика - това е default value за езика. Мое лично правило е, че ако имам switch в кода (или нужда от него) нещо не е наред ![]() Титла: Тия два кода еднакви ли са? Публикувано от: senser в Oct 20, 2008, 16:39
От известно време ме гложди съмнението доколко е обосновано използването на empty() в условни конструкции вместо вътрешното преобразуване на типа ......... Не че е кой знае какъв дерт де - по скоро е за спорта, но все нямам време да направя някой тест скрипт П.П. Какво напрЕко имаш против switch, или еквивалентни вложени if-ове? Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 20, 2008, 17:03
=> error.log
=>
Относно switch-a: - в много случаи имплементира обект от data layer в application layer - както е в този случай; - в повечето от останалите случаи използването се налага заради лош ООП подход. Два интересни линка: http://www-128.ibm.com/developerworks/library/os-php-designptrns/ http://www.ibm.com/develop....atterns За втория - по-специално The state pattern Искрено и чистосърдечно апелирам, всеки, който иска да се занимава с ООП, да прочете Design Patterns: Elements of Reusable Object-Oriented Software http://en.wikipedia.org/wiki/Design_Patterns Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 20, 2008, 17:19 Да не говорим, че използването на $_GET[lang] може да доведе до доста трудно откриваема грешка:
Т.е. използването на нестриктните форми води до един вид използване на глобални променливи, които винаги могат да бъдат "замърсени". Титла: Тия два кода еднакви ли са? Публикувано от: senser в Oct 20, 2008, 22:52 използването на неинициализирани променливи специално в РНР не мисля, че е кой знае какъв проблем - за мен това е толкова "несериозно", колкото и това, че не е нужно да се декларира типа на порменливата, но да не навлизаме в тази полемика ..........
![]() а това със switch-a изобщо не разбрах в какъв контекст се появи иначе балгодарско за линковете - има смислени неща наистина ![]() Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 20, 2008, 23:00
Обичам в логовете ми за грешки да влизат само съобщения, само когато наистина има нещо. А, и аз повече наблегнах на използването на "неявни" стрингове. В нестриктните езици дебъгването може да стане голям проблем, ако не се спазват някои определени правила ![]()
Ми ... ти писа за него ![]() Титла: Тия два кода еднакви ли са? Публикувано от: senser в Oct 21, 2008, 12:11
ето заради това попитах за switch-a ![]() не видях никъде в кода на a_panov да го е изполвал и затова не разбрах защо го включи Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 21, 2008, 13:36 В първото му съобщение, първото парче код ...
Титла: Тия два кода еднакви ли са? Публикувано от: senser в Oct 21, 2008, 14:42
мда - прав си пропуснал съм го но въпреки това продължавам да не разбирам каква ти е основната идея срещу switch ........ ама това си е мой проблем де ![]() за да не цапаме темата на човека - спирам Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 21, 2008, 15:49 Не я цапаме - заради този код е започната темата и именно използването на switch в този конкретен случай трябва да се избягва
![]() Най-лесно ми е да ти задам контра въпрос: Ако използваме парчето код със switch-a, как ще изнесеш поддържаните езици в конфигурационен файл? Или в DB? ![]() Кодът е чист пример за имплементирането на "данни" чрез използване на код. В един хипотетичен случай, някой може да реши, че не се нуждае от DB - ще си направи един огромен switch (primary key) със вложени switch-ове (foreign keys) и да връща някакви данни ... По отношение на ООП - http://en.wikipedia.org/wiki/State_pattern
Титла: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 21, 2008, 16:46 Относто swich-a...
Един човек който разбера повече от мен е написал тука за swich-a: "в много случаи имплементира обект от data layer в application layer - както е в този случай " И ето защо се получават "колизии" или не работещ код както иска "програмиста". Това се получава при недостатъчна компетентност на задклавиатурното устройство. Затова и аз зададох тоя въпрос тука, е се радвам на дискусията. Титла: Тия два кода еднакви ли са? Публикувано от: senser в Oct 21, 2008, 17:53 мдааааа
примера в wikipedia е доста добър наистина - наследяването и класовете там са доста по-добро решение от ползването на условна конструкция друг е въпроса, че ако сайта, който се прави не ползва ООП възможностите на РНР аз лично не бих се сетил за такъв подход за превключването между езиците - не казвам, че не е правилно, а просто, че аз не бих се сетил ![]() Титла: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 28, 2008, 15:46
На този код тихомълком се получава едно ерорче:
Това е ерорчето за което говорят и при мене се получава тогава:
Т.е. поставих едни единични скобички и "спи градъ и циганьете краднат..." Титла: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 28, 2008, 16:40 Доста странно (да не използвам други думички) предложение за отстраняване на бъга.
Използването на единични кавички в PHP означава: стрингът да НЕ се обработва за променливи и специални символи (прим. \n ,\r и т.н.). Т.е., изходът от този фрагмент: Код е точно $var, а не value. С други думи, използването на това решение (array_key_exists('$category', $categories)) ще води ВИНАГИ до търсенето на ключ, който е '$category', а не '{стойността на $category}' ... По-скоро направи малко дебъг, сложи един var_dump($language) преди if-a с array_key_exists и виж за какво става въпрос когато излиза тази грешка. Най-вероятно е да се окаже, че $language е празен стринг. Титла: Re: Тия два кода еднакви ли са? Публикувано от: a_panov в Oct 29, 2008, 10:32 Код Така е решен проблема според мен? Правилно ли съм го "разгънал" кода? var_dump($language); е добре когато браузъра подава език. Но пробвах с Гугъл Хрома да премахна всички езици и тогава и вар_дъмп казава че няма стойност променливата и array_key_exists реве, реве, реве че няма стойност променливата. Аз се заех да осигуря ВИНАГИ стойност на променливата която ще се подава на array_key_exists и разклоних логиката. Така правилно ли е? При мене кода вече работи без тази забележима грешка. Даже сложих ехо1, ехо2 за да виждам в кой клон на логиката съм отишъл в зеависимост от входните данни. Титла: Re: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 29, 2008, 13:35 Най-лесно е само да проверяваш за стойността му:
Код
В случай, че нищо не определи езика, най-накрая се изпълнява принудителното задаване на default езика. ПП: Тъй като скоро ме направиха модератор на тази секция е редно да помодераторствам :) :) :P Редактирах ти съобщението така, че да използва code=php и съответното синтактично оцветяване :) Титла: Re: Тия два кода еднакви ли са? Публикувано от: VladSun в Oct 30, 2008, 14:38 Разделяне на темата:
http://www.linux-bg.org/forum/index.php?topic=33005.0 |