Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Указание версии языка
Форумы портала PHP.SU » » Вопросы новичков » Указание версии языка

Страниц (1): [1]
 

1. Pavelbeginner - 21 Сентября, 2011 - 22:22:07 - перейти к сообщению
В html можно указать версию языка, которую используешь. А в php можно ли как-то указать, что использовал, например, синтаксис языка php 4? Или нужно подбирать сервер, на котором стоит интерпретатор той версии, которую ты использовал?
2. caballero - 21 Сентября, 2011 - 22:44:50 - перейти к сообщению
в HTML ты указываешь версию для браузера хотя в большинстве случаев это не имеет смысла

а в PHP кому будешь указывать
компилятор и сам разберется либо скомпилит либо нет
3. LIME - 21 Сентября, 2011 - 22:45:57 - перейти к сообщению
ппц)))
(Добавление)
скажите интерпретатору что вы хотите 4 пхп а не 5пхп
и ответ сюда выложите)))
(Добавление)
тогда конечно поможем
а иначе недостаточно инфы
(Добавление)
убейте меня)))
4. OrmaJever - 21 Сентября, 2011 - 23:02:57 - перейти к сообщению
Растерялся между прочим зря вы так, автор задал вполне нормальный вопрос.
Pavelbeginner к сожалению такого зделать нельзя, но така функция очень бы не помешала!
5. Pavelbeginner - 21 Сентября, 2011 - 23:19:55 - перейти к сообщению
[quote=caballero]в HTML ты указываешь версию для браузера хотя в большинстве случаев это не имеет смысла[/quote]

Что значит не имеет смысла? Вы хоть знаете для чего предназначен doctype? Для того, чтобы указать по каким стандартам браузеру парсить код и как его интерпретировать. Стандартов куча, синтаксис разный, дефолтные значения css свойств разных тегов в разных версиях стандартов разные.

[quote=LIME]
ппц)))
(Добавление)
скажите интерпретатору что вы хотите 4 пхп а не 5пхп
и ответ сюда выложите)))
(Добавление)
тогда конечно поможем
а иначе недостаточно инфы
(Добавление)
убейте меня)))
[/quote]


Не вижу повода для смеха? Что юморного я напечатал? Вполне логично предположить наличие такой функции в php т.к. в браузерах такая функция имеется. Если бы такая функция была бы в php, то не нужно было бы подбирать сервер, на котором стоит именно та версия интерпретатора, которую Вы использовали.

[quote=OrmaJever][/quote]

Правильно ли я понимаю, что используя, например, синтаксис php 5, мне нужно искать сервер, на котором стоит интерпретатор именно этой версии языка?
(Добавление)
caballero пишет:
а в PHP кому будешь указывать
компилятор и сам разберется либо скомпилит либо нет


Лучше не пишите глупости. Для начала знайте, что php интерпретируемый язык с неким элементом компиляции в виде байт кода.
6. OrmaJever - 21 Сентября, 2011 - 23:32:58 - перейти к сообщению
Pavelbeginner пишет:
Правильно ли я понимаю, что используя, например, синтаксис php 5, мне нужно искать сервер, на котором стоит интерпретатор именно этой версии языка?

да, если компилятор встретит непонятную синтаксическую конструкцию он выдаст Parse error.
(Добавление)
хотя можно самому делать велосипед и использовать phpversion(), но лутше найти нормальный хостинг с php 5.3 и жить станет легче Подмигивание
7. caballero - 22 Сентября, 2011 - 00:20:38 - перейти к сообщению
Цитата:
между прочим зря вы так, автор задал вполне нормальный вопрос

Не считая что поставил телегу впереди лошади.

Цитата:
Если бы такая функция была бы в php, то не нужно было бы подбирать сервер, на котором стоит именно та версия интерпретатора, которую Вы использовали.

То есть с помощью некоей функции вы бы заставили компилятор 4 версии работать с PHP5?


Цитата:
того, чтобы указать по каким стандартам браузеру парсить код и как его интерпретировать.

Браузеры чихать хотели на doctype. В лучшем случае туда заглядывают когда неоднозначная ситуация в коде.

Цитата:
Для начала знайте, что php интерпретируемый язык с неким элементом компиляции в виде байт кода.

А шо это за некий элемент? Язык либо интерпретируется либо компилируется. В байт код или машинный код сути дела не меняет.

Цитата:
хотя можно самому делать велосипед и использовать phpversion(),

Замечательно - вы написали код для синтаксиса 5.3 а функция вернула что там 5.2 и что дальше? Препроцессора у PHP ведь нет как у С и С++.
8. OrmaJever - 22 Сентября, 2011 - 01:00:38 - перейти к сообщению
caballero пишет:
Замечательно - вы написали код для синтаксиса 5.3 а функция вернула что там 5.2 и что дальше? Препроцессора у PHP ведь нет как у С и С++.

зато есть самое обычное условие
PHP:
скопировать код в буфер обмена
  1. if(phpversion() == '5.3.5') { // надо додумать с условием но суть понятна
  2. $a = function() { echo 'lambda function';}
  3. const AA = 123;
  4. } else {
  5. $a = create_function('', 'echo "lambda function";')
  6. define('AA', 123);
  7. }

и так же можно запросто написать 2 разных класа которые делают практически одно и то же
9. caballero - 22 Сентября, 2011 - 01:13:36 - перейти к сообщению
Это еще может проконать для функций а как быть с синтаксическими конструкциями типа namespaces

И какой смысл писать два варианта кода который делает одно и то же если
один из вариантов будет работать в обоих версиях. Вы много проектов встречали где такую фигню бы городили?
10. Pavelbeginner - 22 Сентября, 2011 - 01:23:48 - перейти к сообщению
caballero пишет:
То есть с помощью некоей функции вы бы заставили компилятор 4 версии работать с PHP5?


Речь идет о том, чтобы был интерпретатор, который считывая первую строку php файла определял какая версия языка используется и вызывал соответствующую версию интерпретатора. Да обычную обертку можно сделать даже. Программа открывает файл, смотрит версию языка, делает системный вызов fork, затем exac нужного интерпретатора. Всё. В чем проблема так сделать было разработчикам?

caballero пишет:
Браузеры чихать хотели на doctype. В лучшем случае туда заглядывают когда неоднозначная ситуация в коде.


Сразу видно, что Вы ничего не знаете о браузерах и вообще о вебе и тем более не верстали ни одного сайта. Мне даже отвечать Вам после такого заявление не хочется. Вы не знаете азов.
caballero пишет:
А шо это за некий элемент? Язык либо интерпретируется либо компилируется. В байт код или машинный код сути дела не меняет.


Я промолчу.
11. caballero - 22 Сентября, 2011 - 01:42:28 - перейти к сообщению
Цитата:
Речь идет о том, чтобы был интерпретатор, который считывая первую строку php файла определял какая версия языка используется и вызывал соответствующую версию интерпретатора. Да обычную обертку можно сделать даже. Программа открывает файл, смотрит версию языка, делает системный вызов fork, затем exac нужного интерпретатора. Всё. В чем проблема так сделать было разработчикам?


Мы говорим о том что есть а не фантазируем что могло быть. Никто так компиляторы не делает ни для одного языка. Программист подстраивается под версию а не компилятор содержит надцать версий за последние 10 лет и переключается между ними.


Цитата:
Сразу видно, что Вы ничего не знаете о браузерах и вообще о вебе и тем более не верстали ни одного сайта

вебом занимаюсь уже 10 лет. А если ты свято веришь в doctype то объясни проблемму кроссбраузерности сайтов

Цитата:
Я промолчу.


Лучше промолчать чем писать глупости. PHP с 4 версии уже не интерпретатор
то есть не выполняется построчно как раньше.
Только не надо про байт код а то окажется что Java и C# тоже интерпретаторы
12. Мелкий - 22 Сентября, 2011 - 09:20:02 - перейти к сообщению
Pavelbeginner пишет:
Указание версии языка

phpversion поможет.

Pavelbeginner пишет:
Или нужно подбирать сервер, на котором стоит интерпретатор той версии, которую ты использовал?

Если некорректно работает на более новой - исправлять/переписывать. Если же это не подразумевается, то да, найти хостинг, который поддерживает нужную версию.
13. Ch_chov - 22 Сентября, 2011 - 12:56:05 - перейти к сообщению
Pavelbeginner пишет:
А в php можно ли как-то указать, что использовал, например, синтаксис языка php 4
PHP 4 в новых проектах уже давно никто не использует. Есть смысл подумать над выбором между 5.2 и 5.3.
У любого php скрипта есть системные требования. Если вы пишете скрипт, который использует возможности PHP 5.3 , то указывайте это в README или ещё где то. Самый простой вариант:

PHP:
скопировать код в буфер обмена
  1. if (version_compare(PHP_VERSION, '5.3.0') < 0)
  2.     exit('Для работы скрипта необходим сервер с поддержкой PHP 5.3');


caballero пишет:
И какой смысл писать два варианта кода который делает одно и то же если
один из вариантов будет работать в обоих версиях. Вы много проектов встречали где такую фигню бы городили?
Довольно много. Нативная php функция обычно быстрее самодельной. Если нет возможности её использовать, то во многих случаях имеет смысл сделать запасной вариант – fallback (пример).
14. caballero - 22 Сентября, 2011 - 13:32:43 - перейти к сообщению
Цитата:
if (version_compare(PHP_VERSION, '5.3.0') < 0)
exit('Для работы скрипта необходим сервер с поддержкой PHP 5.3');

Такое есть смысл указываеть если это "коробочная" версия которую кто то может пытатся ставить (ЦМС, фрамеворк и т.д.)

 

Powered by ExBB FM 1.0 RC1