LINUX.ORG.RU

Разработчики PHP объявляют о предстоящем окончании поддержки PHP 4.


0

0

Сегодня (13ого июля 2007ого года) исполняется три года с момента выхода PHP 5. За эти три года было сделано много улучшений по сравнению с PHP 4. PHP 5 сейчас быстрый, стабильный и готов к использованию в рабочей среде. На подходе уже PHP 6 и, соответственно, работы над PHP 4 будут прекращены.

Этим сообщением команда разработчиков PHP объявляет, что поддержка PHP 4 будет продолжаться только до конца года. После 31ого декабря больше не будут выпускаться релизы PHP 4.4. В определённых случаях мы будем продолжать исправлять критические ошибки безопасности до 08ого августа 2008ого. Пожалуйста, подготовьте ваши приложения для перехода на PHP 5 до конца этого года.

За документацией по переходу с PHP 4 на PHP 5, советуем обращаться к нашему "migration guide". Дополнительная информация содержится в руководствах по переходу с версий 5.0 на 5.1 и 5.1 на 5.2.

Новость переведена с оригинала на сайте PHP.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от anonymous

Ruby заявит о несоответствии типов:
a = "anonymous"
b = 2;
# идет какой-то код
puts a + b
и получим
TypeError: can't convert Fixnum into String
        from (irb):19:in `+'
        from (irb):19
        from :0
поэтому обязаны сделать
puts a.to_i + b или .to_f для float

anonymous
()

УРААА!!!!

Да здравствует ПЫХПЫХКАПЕЦ!!!

Наконец то хосты очистяца от этого убожества 8)

PS

PHP5 хоть немного но юзабельней ;)

SV0L0CH
()
Ответ на: комментарий от anonymous

> На C программист сам этого попросил.

Я привел пример нормального кода, где если ввести в atoi() строку, то
она даже не пикнет про ошибку, а возвратит ноль. И с тем как printf()
автоматом преобразовал float в int при чем некорректно и не остановив
программу тоже все видели. Вот так она выглядит, строгая типизация в С.

> Здесь никто не просил таких фокусов вытворять.

Здесь языку подсунули строку и потребовали ее умножить. Это заведомо
некорректные данные, которые программист должен был проверять на входе. И
поведение PHP здесь один в один как у C с atoi("anonymous")*2.

>$ perl -e 'use strict "refs"; use warnings FATAL => qw(all); print "anonymous" * 2, "\n";'
Argument "anonymous" isn't numeric in multiplication (*) at -e line 1.

Ну а с такими читами можно и в PHP сделать вот так:

$ cat a.php
#!/usr/bin/php

<? $a="anonymous";
$b=2;

if(is_numeric($a)) {
print 'anonymous'*2;
echo "\n";
}
else die ("Идити нафик с умножением строки на число\n");
?>

$ ./a.php

Идити нафик с умножением строки на число

anonymous
()
Ответ на: комментарий от anonymous

> Я привел пример нормального кода, где если ввести в atoi() строку, то она даже не пикнет про ошибку, а возвратит ноль. И с тем как printf() автоматом преобразовал float в int при чем некорректно и не остановив программу тоже все видели. Вот так она выглядит, строгая типизация в С.

Ну а кого ты хотел удивить? Назвать сишную типизацию строгой можно только условно. Манипуляции c void * и неявное приведение типов не очень то стыкуются с понятием "strong typing".

> Ну а с такими читами можно и в PHP сделать вот так:

:D Да, можно по всякому извращаться. И проверять ручками тип каждой переменной перед использованием тоже можно, если больше нечем заняться. Но я всё же предпочитаю чтобы за меня это делал компилятор.

Hjorn
()
Ответ на: комментарий от anonymous

> $ perl -e 'use strict "refs"; use warnings FATAL => qw(all); print "anonymous" * 2, "\n";' Argument "anonymous" isn't numeric in multiplication (*) at -e line 1.

Зато в стандартном режиме ничуть не лучше php:

$ perl -e 'print "anonymous" * 2,"\n";' 0

anonymous
()
Ответ на: комментарий от Hjorn

> :D Да, можно по всякому извращаться. И проверять ручками тип каждой переменной перед использованием тоже можно, если больше нечем
заняться. Но я всё же предпочитаю чтобы за меня это делал компилятор.

Ну вот вам strong typing:

$ cat x.c
#include <stdio.h>

int
main (int argc, char **argv)
{
int a = 1000000,
b = 1000000;

printf ("%d*%d=%d\n",a,b,a*b );

return 0;
}
$ ./x
1000000*1000000=-727379968

а вот dynamic:

$ php -r "print 1000000*1000000;";
1.0E+12


anonymous
()
Ответ на: комментарий от anonymous

> Здесь языку подсунули строку и потребовали ее умножить. Это заведомо некорректные данные, которые программист должен был проверять на входе.

Строки поддерживают операцию умножения. Это не заведомо некорректные данные. Что тебя тут смущает?

anonymous
()
Ответ на: комментарий от anonymous

> Строки поддерживают операцию умножения.

Ну и сколько будет "a"*"b"? В PHP не поддерживают, и сложение тоже не поддерживают - для конкатенации строк есть операция ".". В C++ тоже:

$ cat x.cpp #include <iostream> #include <string>

using namespace std;

int main() {

string a="anonymous";

cout << a*2;

return 0; } $ g++ x.cpp -o x x.cpp: In function ‘int main()’: x.cpp:10: error: no match for ‘operator*’ in ‘a * 2’

anonymous
()
Ответ на: комментарий от anonymous

> Ну и сколько будет "a"*"b" Нисколько. Сгенерируется исключение.

TypeError: can't multiply sequence by non-int of type 'str'

Так что тебе неудобно в таком поведении строк и списков?

anonymous
()
Ответ на: комментарий от anonymous

> Ну и сколько будет "a"*"b"

Нисколько. Сгенерируется исключение.

TypeError: can't multiply sequence by non-int of type 'str'

Так что тебе неудобно в таком поведении строк и списков?

anonymous
()
Ответ на: комментарий от anonymous

> Просто после сурового и туповатого Си, которому нужно разжевывать какждый чих, с менее капризным и более удобным высокооуровневым PHP приятно иметь дело,

После тюремной баланды гамбургер тоже приятно навернуть. Менее говёной пищей он от этого не становится.

yk4ever
()
Ответ на: комментарий от anonymous

> а вот dynamic:
> 
> $ php -r "print 1000000*1000000;";
> 1.0E+12 

Херня это, мой дорогой онанимус, а не дунамик. Ибо:

C:\>python -c "print 1000000*1000000"
1000000000000

yk4ever
()
Ответ на: комментарий от hose

>просто интерестно уже почти как год пишу на пхп

>ничего особо страшного и ужастного пока что не увидел ))

Не обращай внимания. Недостатки PHP, найденные на ЛОРе:

- глобальные переменные, автоматом забираемые из CGI-переменных окружения (ещё в 4ых версиях по умолчанию отключено, но и раньше этим пользовались тока ламеры);

- отсутствие namespace'ов (на мой взгляд, единственный реальный недостаток, собираются исправить в 6й версии);

- отсутствие замыканий и анонимных функций (как без них на ЛОРе?).

Ay49Mihas ★★★★
()
Ответ на: комментарий от Ay49Mihas

И отсутствие этой, как её, ну....хвостовой рекурсии, вот :-)

r_asian ★☆☆
()
Ответ на: комментарий от sv75

>1. Я сидел на МК-61 с 1987 по 1990 годы (примерно). 2. Я люблю питон (несмотря на сложности с кодогенерацией и другие реальные проблемы). 3. (вывод) рекомендую в 2007 году сидеть на БЗ-34 самому, а остальные уж сами решат как-нибудь ;)

Никто на мне не сидел в эти годы!

MK61
()
Ответ на: комментарий от Ay49Mihas

>- отсутствие замыканий и анонимных функций (как без них на ЛОРе?).

:) эт точно!

Но ты еще забыл одну вещь: непредсказуемое поведение при создании класса. (Это когда _выполнялся_ конструктор, несмотря на явную ошибку в его наименовании)

ну и - с безопасностью проблемки, куда ж без них.

grinn ★★
()
Ответ на: комментарий от Ay49Mihas

Ещё к недостаткам:

- отсутствие метапрограммирования, что вместе с отсутствием замыканий и нормальной системы типов делает язык абсолютно нерасширяемым.

- очень тормозная реализация, связанная с чрезмерной динамичностью типизации. Быстрее не получится при всём желании.

- огромный code base, но запредельно низкого качества, что разом превращает доступность готовых решений в недостаток. Но ламерам нравиццо.

После такого набора недостатков писать на таком языке станет только ламер.

anonymous
()
Ответ на: комментарий от anonymous

Люди, реальность такова, что 90% коммерческих сайтов стоят на пхп, и от этого никуда не деться и вопрос, что лучше не корректен, ведь всем надо работать и желательно зарабатывать

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.