Forum Webscript.Ru
Программирование => PHP => Тема начата: xRUSha от 22 Марта 2005, 02:45:36
-
здраствуйте.
мне нужна консультация php\'ника
ситуация такая - я скачал скрипт, который мне нужно проапдейтить и на его основе сделать сайт.
но при попытке установить его сталкнулся с проблемой:
все обращения к элементам массивов в этих скриптах были в такой вот форме
$home = $_SERVER[DOCUMENT_ROOT];
....
$pwd = $_COOKIE[password];
...
$bar = $foo [pass]
т.е. без ковычек в индексе.
я всегда был уверен, что обращатся к элементу массива нужно по индексу или числовому $foo[0] или строковому $foo["dsasda"], но если используется строковый индекс, то его необходимо брать в ковычки.
а прочитав этот код я понимаю что был неправ, т.к. он работает на сервере.
собственно мой вопрос такой - в каких случаях к элементу массива можно обращатся через строковый индекс без ковычек. может какое-нить значение php.ini? на php.net я ничего на эту тему не нашел (может плохо искал?)
-
Об этом написано в мануале по PHP. Без кавычек работать будет (пока), но это не правильно.
-
а прочитав этот код я понимаю что был неправ
С чего ты взял, что это ты был неправ? неправ как раз автор скрипта.
в каких случаях к элементу массива можно обращатся через строковый индекс без кавычек
НИ В КАКИХ.
без кавычек он перестаёт быть строковым.
и слово кАААААААААААААвычка пишется через А.
постарайся это запомнить, неграмотный друг мой.
-
Об этом написано в мануале по PHP. Без кавычек работать будет (пока), но это не правильно.
где это написано - ткни меня носом если не сложно. я не нашел
НИ В КАКИХ.
без кавычек он перестаёт быть строковым.
но работает же. вот мне и хочется выяснить в при каких условиях. как должен быть настроен пхп и какая нужна версия чтоб это работало
-
xRUSha:
где это написано - ткни меня носом если не сложно. я не нашел
в докуметации на массивы, тормоз.
xRUSha:
но работает же.
это тебе мерещится.
xRUSha:
вот мне и хочется выяснить в при каких условиях.
НИ ПРИ КАКИХ.
Не понял ещё? Ну так перечитай ещё раз.
кто ты такой, вообще? Тебе сказали, как правильно. Взял под козырёк и ушуршал исполнять. Рассуждать мал ещё. понятно?
Всё, вопрос закрыт.
СТРОКИ
В ПХП
ПИШУТСЯ В КАВЫЧКАХ
А найдёшь ты или не найдешь в мануале - это уже дело десятое. Доказывать тебе никто ничего не должен. Тебя достаточно проинформировать. тнформацию ты получил. Свободен
-
короче.
Меня бесит, когда ламеры стоят на своём, НЕПРАВИЛЬНОМ мнении.
И сразу уже не хочется что-то объяснять.
потому, что одно дело - это когда человек принял к сведению, и спросил - "а почему". И совсем другое - когда от горшка два вершка, а всё равно "как сделать, чтобы работало".
послеждний шанс. Объясняю.
Хотя вероятность дохождения черезвычайно мала.
Почему нужно писать ключи массивов правильно, а не так, как это рекомендует делать малограмотный Руслан Курепин?
Строки в PHP должны заключаться в кавычки. По этому признаку, собственно, интерпретатор и отличает строки от других элементов программы. Если же мы написали строку без кавычек, то PHP сначала решит, что это константа и попытается подставить её значение. Не найдя константу, PHP предположит, что нерадивый программист просто забыл подставить кавычки. Интерпретатор пожалеет несчастного и продолжит разбор программы, но при этом сообщит програмисту всё, что о нём думает. Но только если его попросить об этом.
А просить надо всегда.
Хлеб программиста - тяжек и горек. Незаметные ошибки подстерегают его на каждом шагу, и на то, чтобы поймать хотя бы одну, уходят многие и многие часы (ну кроме случаев, когда ты вываливаешь свой код на форум и толпа людей, которым больше ну совершенно нечем заняться, лихо начинают это делать за тебя).
Интерпретатор, по мере сил и способностей, пытается помочь программисту. В частности, подсказывая, что переменная или константа, к которой он обращается, не существует.
Для этого писать программы надо при уровне отображения ошибок E_ALL. Обязательно.
Поскольку помимо отлова ошибок, эта директива помогает и от взлома. Ведь, если мы всегда обращаемся только к объявленным переменным, значит, нам гарантированно ничего в скрипт не подсунет злобный хакер снаружи, какое бы значение ни принимала директива register_globals.
Поэтому, вопреки распространённому заблуждению, нотайсы, которые выдаёт PHP при E_ALL - это не досадная надоедливая фича, внесённая разработчиками PHP в язык только для того, чтобы досадить программистам, а насущная необходимость.
Отсюда следует простой вывод.
Программы надо писать так, чтобы сообщение о возможной ошибке (которым является нотайс), указывало именно на возможную ошибку. А не на нашу неряшливость. Экономия двух спичек на массиве несоразмерима с проблемами, которые она может вызвать.
-
отвечать не хочется
тем более одному из
толпы людей, которым больше ну совершенно нечем заняться
-
xRUSha:
где это написано - ткни меня носом если не сложно. я не нашел
http://ru.php.net/manual/ru/language.types.array.php#language.types.array.donts