Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Имена переменных и ключей
 
 автор: human   (22.11.2005 в 08:42)   письмо автору
 
 

Возможно, что не все об этом знают (в книжках я таких примеров не встречал),
но PHP (в отличие от других языков программирования) весьма лоялен
в отношении использования кириллицы.

Поэтому для патриотически настроенной части населения, уважающей
наш великий и могучий, предлагаю такой тест:
(впрочем, ничто не мешает сделать то же самое и на украинском...:-) )


<?php
// будет ли это работать... ?
$фрукты = array(яблоко=>зеленое,малина=>красная);

//Так - работает !
$кислое  $фрукты['яблоко'];
$сладкая $фрукты['малина'];
echo 
"1)$кислое$сладкая<br>";

//И даже так - тоже работает !
$кислое  $фрукты[яблоко];
$сладкая $фрукты[малина];
echo 
"2)$кислое$сладкая<br>";

// Ну а здесь уже можно не сомневаться...
foreach ($фрукты as $плод => $цвет)
   echo 
"$плод - $цвет<br>";
?>

   
 
 автор: Saddam   (22.11.2005 в 10:14)   письмо автору
 
   для: human   (22.11.2005 в 08:42)
 

Я даже и не догадывался, что так можно ... :-)

   
 
 автор: Football   (22.11.2005 в 12:22)   письмо автору
 
   для: human   (22.11.2005 в 08:42)
 

Вообще это не рекомендуется делать поскольку на сервере скрипт просто не будет работать!

   
 
 автор: cheops   (22.11.2005 в 14:07)   письмо автору
 
   для: Football   (22.11.2005 в 12:22)
 

Это действительно не очень рекомендуется, так как очень много русских кодировок и на сервере может не поддерживать конкретная кодировка...
Кроме того, традиционно все программы пишутся на английском языке - те программисты для которых он не родной избавлены от целого класса ошибок. Например, начинающие англоязычные программисты часто совершают ошибку в цикле
<?php
while($i 100)
{
  
// Первый блок кода
  
$i++
  
// Второй блок кода
}
?>

считая, что цикл обязан закончится как только $i достигнет 100 внутри цикла и "Второй блок кода" уже выполняться не будет. Для них операторы это ещё и слова их родного языка и они подсознательно от них ожидают такого же поведения, которым они привыкли обозначать поведение других людей или явлений. Для нас while - это в первую очередь цикл выполняющийся пока условие true, а затем конструкция языка.

Хотя действительно фича забавная, но как то сбивающая с толку - помнится нам в школе преподавали язык "Алгоритм" - он был на русском языке - я его ни черта не понимал, а BASIC уже как-то лучше понимался, наверное потому что каждый оператор имел строго определённое значение, а английский я тогда не знал.

   
 
 автор: DDK   (22.11.2005 в 15:17)   письмо автору
 
   для: cheops   (22.11.2005 в 14:07)
 

>> начинающие англоязычные программисты
А почему всё же именно англоязычные ? :) Тема не раскрыта полностью, "аффтар, пЕши иСЧо" ! :)

   
 
 автор: human   (22.11.2005 в 19:07)   письмо автору
 
   для: DDK   (22.11.2005 в 15:17)
 

Хочу подчеркнуть, что все зарезервированные (служебные) слова пишутся в любом случае на английском и никак на понимание синтаксиса не влияют. Перефразируя известную поговорку: "Фортран - он и в Африке - Фортран", можно сказать, что For - он и в Африке (и в России) - тоже For.

Что касается работоспособности на сервере, то этот забавный пример я, естественно, протестировал на сервере и результат оказался успешным !
Не исключено, что на работоспособность влияет set locale, но если она установлена неверно,
то последствия будут гораздо более тяжкими.

Тестировал на локальной машине (Apache под WIn XP), а также - на сервере РосБизнесКонсалтинга (у меня там сайты). У них Apache под Unix'ом (если я ничего не путаю).

Поэтому есть предложение: протестировать его на других хостингах (или локальных машинах).

Что касается пользы, то русскоязычным именованием переменных можно существенно повысить осмысленность алгоритмов и резко сэкономить на комментариях (русских, однако !!!). Ну а для писателей, пишущих книжки про PHP для начинающих - раздолье для творчества: можно оперировать не только яблоками-грушами, но и пивом с воблой.

Однажды мне пришлось для этого написать для процессоров Моторолы собственный ассемблер с компоновщиком, которые бы понимали русские имена. В результате программы стали очень смахивать на стихи Пушкина (ил Маяковского)...:-)

Но есть и недостатки: если вы захотите отправить свой скрипт в англоязычный мир (или китайцам), то вас не поймут. Впрочем, использование в текстах смеси "английского с нижегородским" - тоже в подобных случаях не есть хорошо...:-)

   
 
 автор: isset   (22.11.2005 в 21:27)   письмо автору
 
   для: human   (22.11.2005 в 19:07)
 

Да будет везде работать, т.к. идентификаторы для PHP - ASCII коды, он не понимать русский или английский слово:)

   
 
 автор: human   (23.11.2005 в 08:14)   письмо автору
 
   для: isset   (22.11.2005 в 21:27)
 

>Да будет везде работать, т.к. идентификаторы для PHP - ASCII
>коды, он не понимать русский или английский слово:)


Хочу сделать уточнение:

ASCII-символы в именах переменных не могут быть любыми.
Можно применять только такие:

ASCII-символы от 48 до 57 (0x30-0x39) это символы десятичных цифр
ASCII-символы от 65 до 90 (0x41-0x5a) прописные латинские
ASCII-символ 95 (0x5f) подчерк
ASCII-символы от 97 до 122(0x61-0x7a)строчные латинские
ASCII-символы от 127 до 255 (0x7f-0xff) (сюда попадают русские буквы в любых
однобайтовых кодировках, например, DOS-866, Win-1251, КОИ-8)

Для проверки корректности имени можно использовать такое регулярное выражение:

"[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"

И еще одно ограничение: первый символ после доллара не должен быть цифрой.

   
 
 автор: Akira   (22.11.2005 в 20:52)   письмо автору
 
   для: cheops   (22.11.2005 в 14:07)
 

Полностью солидарен. Помниться, я где то сталкивался с программным кодо, где необходимо указывать переменные на русском и их параметры на русском. С трудом получалось.
Просто пример:
$apple = 12;
$яблоко = 12;
-----------------
Наше яблоко, так и хочеться прочитать яблок, а потом в коде и напишешь, на автомате.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования