imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 23.07.2004, 12:48     # 1
Die_Slogan
Newbie
 
Регистрация: 02.02.2004
Сообщения: 34

Die_Slogan Путь к славе только начался
Question PHP 5, стоит ли переходить?

Недавно прочел книжку O'Reilly "Upgrading to PHP 5" (кстати, если кому нужно, могу закинуть) и был просто потрясен новыми возможностями 5-ки. Вот только есть множество ньюансов, создающих переход на него проблематичным.
Народ, поделитесь опытом, как работают старые скрипты на новой версии PHP
__________________
Наше вам с кисточкой...
Die_Slogan вне форума  
Старый 23.07.2004, 15:25     # 2
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
никто же не заставляет тебя писать код в ООП-стиле, кто придерживался этого подхода(например я), тот делал это еще в php4.
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 23.07.2004, 15:49     # 3
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Die_Slogan
Скрипты работыют. только валятся нотисы, предупреждающие о том, что такая-та структура языка устарела...
__________________
Nunc est bibendum
is_absent вне форума  
Старый 23.07.2004, 15:49     # 4
Sych
Junior Member
 
Регистрация: 01.11.2002
Адрес: Kyiv, Ukraine
Сообщения: 95

Sych Мелкий засранец
Переходить стоит на тестовых или девелоперских серверах - а для продакшена надо еще подождать.

Фмич мног разных вкусных и это клево - чем больше людей будут использовать в своих работах новую версиию тем быстрее в ней найдут баги и тем быстрее ее будут ставить на хостинги.
Sych вне форума  
Старый 23.07.2004, 15:53     # 5
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
На 5-ый PHP нужно переходить только при наличии сервера или письменного согласия хостера
RaZEr вне форума  
Старый 25.07.2004, 01:39     # 6
BetDeD
Newbie
 
Аватар для BetDeD
 
Регистрация: 03.02.2004
Адрес: Вселенная
Пол: Male
Сообщения: 45

BetDeD Известность не заставит себя ждать
Я попробовал енто чудо. Вроде ничего. Тока возникли проблемы с функциями для работы с MySQL. Напроч отказывается коннектиться к базе. В чом может быть дело?
BetDeD вне форума  
Старый 25.07.2004, 02:53     # 7
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
хех, а мой класс работает и с php5

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

что прочитал:

новый ООП.

наконец-то появились модификаторы доступа.
свойства
конструкторы и деструкторы
наследование(в том числе и реализуемых классом интерфейсов)
статические методы

появились итераторы(в SPL). это радует. пока их не пробовал, только прочел о них и глянул пару примеров.

вещь имхо крайне полезная. теперь не надо будет писать бесконечно унылые рекурсивные классы для вывода древовидных структур и т.д.

появились интерфейсы. тоже хорошая штука. но непонятно, как это дело использовать в реале.

пример в .NET

1. описываем стандартный интерфейс доступа к данным, например.
2. далее пишем реализацию(класс) для конкретной базы данных(используя уже типизированный провайдер, например для SqlServer - SqlClient).
3. а вот тут вся суть предыдущих действий. создаем класс бизнес логики и используем единый(ну почти, тут есть кое-какие проблемы, но они решаемы) интерфейс доступа к данным, т.е. не нужно каждый раз переписывать этот класс для разной бд. и с помощью рефлексии, у нас "на автомате" подставляется нужный класс.

вобщем все это конечно пространно, но кто знает что такое n-tier appz, тот меня поймет.

ну и вообще интерфейсы, это хороший путь описания функциональности класса, без его реализации(собственно это и есть отличие от абстрактного класса).

короче нужно смотреть рефлексию.

далее, xml.

наконец-то, заявлено о поддержке следующих технологий:
DOM
SAX
SimpleXML
XPath
XSLT
для нас представляют интерес все, кроме SAX.
а где Xml Schema?!

о чем не имею представления:
SQLite
Web Services(SOAP) - в php-версии
Tidy


вобщем, налицо прогресс, ну и как обычно огроменная ложка дегтя:

В Dot NET(.NET) все это и много больше появилось давным давно.
Также несколько языков программирования, мощнейшая система готовых классов(.NET Framework) и т.д. и т.п.

скоро: .NET Fкamework 2.0(уже есть beta). И там очень много нового(в ASP.NET, например).

поэтому пока что php5 все еще безнадежно отстает от asp.net.

вывод:
переходить надо, я бы даже сказал необходимо. не секрет, что сегодня web-приложения это сложные распределенные системы, которые требуют определенного подхода к разработке(в том числе и к языку программирования).
php5, приобретя многие положительные качества, по прежнему остается довольно "легким" и массовым решением.
конечно, если вы предпочитаете писать 2-3 строчки кода в HTML, то скорее всего почти не заметите разницу, ну а все остальные оценят все мощь объектно-ориентированного подхода.

простой пример, этот(он менялся весьма незначительно) класс я использую почти во всех своих разработках на php(там где применяется mysql):
Код:
<?php
///////////////////////////////
// Description: ClassHelper for Mysql
// Author: Denis 'Sherman' Gabaidulin © 2002-2004
// Version: 0.3.3 beta(global version 2)
// Comments: __________________
///////////////////////////////
////////////////////////////////////////////////////////
// +added mysql_num_rows check for result
////////////////////////////////////////////////////////
	class MySql
	{
		var $dbServer = "localhost";
		var $dbName = "base";
		var $dbUser = "user";
		var $dbPass = "ggggg";
			
		var $dbConn;
		var $dbResult;
		
		var $dbErrorNumber = 0;
		var $dbErrorMessage = "";
		
		var $debugFromHanlder = "";
		
		/*function MySql()
		{
			//default constructor
			
		}*/
		
		function MySql($dbServer = null, $dbName = null, $dbUser = null, $dbPass = null)
		{
			//default constructor
			if ($dbServer != null)
			{
				$this->dbServer = $dbServer;
			}
			if ($dbName != null)
			{
				$this->dbName = $dbName;
			}
			if ($dbUser != null)
			{
				$this->dbUser = $dbUser;
			}
			if ($dbPass != null)
			{
				$this->dbPass = $dbPass;					
			}
		}
		function MySql_Connect()
		{
			if (!isset($this->dbConn) || $this->dbConn == null)
			{
				$this->dbConn = @mysql_connect(
					$this->dbServer,
					$this->dbUser,
					$this->dbPass);
					
				$this->MySql_ErrorHanlder("connect");
			}
		}
		function MySql_SelectDb()
		{
			if (isset($this->dbName) && $this->dbName != null)
			{
				@mysql_select_db($this->dbName,$this->dbConn);
				
				$this->MySql_ErrorHanlder("select");
			}
		}
		function MySql_QueryDb($dbQuery)
		{
			if (isset($dbQuery) && $dbQuery != null)
			{
				$this->dbResult = @mysql_query($dbQuery,$this->dbConn);
				
				$this->MySql_ErrorHanlder("query");
				
				if (@mysql_num_rows($this->dbResult) == 0)				
				{
					$this->dbResult=null;
				}
			}
		}
		function MySql_Close()
		{
			if (!isset($this->dbConn) || $this->dbConn != null)
			{
				@mysql_close($this->dbConn);
				
				$this->MySql_ErrorHanlder("close");
				
			}
			
		}
		function MySql_ErrorHanlder($debugFromHanlder)
		{
			$this->dbErrorNumber = mysql_errno();	
			$this->dbErrorMessage = mysql_error();
			
			if ($this->dbErrorNumber != 0)
			{
				echo $this->dbErrorNumber . "    " . $this->dbErrorMessage;
				echo "    " . $debugFromHanlder . "<BR>\r\n";
			}
			/*if ($this->dbErrorNumber == 2003)
			{
				sleep(2);
			}*/
			
			$this->dbErrorNumber = 0;
			$this->dbErrorMessage = "";
			
			
		}
		
			
	}

?>
Использование:
Код:
$db = new MySql(null,"databse","root","gggg");
	
		$db->MySql_Connect();
		$db->MySql_SelectDb();
			
		$db->MySql_QueryDb("select * from Categories limit 1, 10");
		
	
		if ($db->dbResult)
		{
			while($row = mysql_fetch_array($db->dbResult))
			{
				echo $row[0] . "<BR>\r\n";
			}
		}
можно переписать его специально под php5, а можно использовать и как есть.
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 26.07.2004, 10:15     # 8
Die_Slogan
Newbie
 
Регистрация: 02.02.2004
Сообщения: 34

Die_Slogan Путь к славе только начался
Sheryld, не-ООП подход хорош в маленьких скриптах, а когда проект разрастается до уровня портала, то хочешь-не хочешь приходится использовать ООП. Притом, ИМХО, он значительно упрощает жизнь.
Бтв, в твоем классе не проще было бы реализовать подключение и выбор базы данных в самом конструкторе класса?
Sych, я тоже так подумываю, но еще хочется узнать, как работает, и самый главный вопрос: Насколько совместимо с прежним софтом.
is_absent, ну нотисы эт фигня, варнингов не было?
__________________
Наше вам с кисточкой...
Die_Slogan вне форума  
Старый 26.07.2004, 13:05     # 9
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Die_Slogan
совместимость сверху вниз, как обычно.. не помните как с php3 на php4 переходили?
варнингов не было..
а нотисы связаны с объявлением свойств класса с помощью var вместо рекомендуемых private|public|protected [const]
__________________
Nunc est bibendum
is_absent вне форума  
Старый 27.07.2004, 12:22     # 10
Die_Slogan
Newbie
 
Регистрация: 02.02.2004
Сообщения: 34

Die_Slogan Путь к славе только начался
is_absent, совместимость сверху вниз, это в идеале, а на практике, как обычно, бывают свои приколы.
__________________
Наше вам с кисточкой...
Die_Slogan вне форума  
Старый 27.07.2004, 12:42     # 11
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Die_Slogan
Все что работало в php4 будет работать в php5. А про "на практике" обычно говорят люди, у которых не очень качественный код...
Конкретно к тебе я это не отношу -- не видел как ты пишешь.

Чувствую пора создавать новую тему, о чистоте/качестве кода
__________________
Nunc est bibendum
is_absent вне форума  
Старый 27.07.2004, 15:55     # 12
Die_Slogan
Newbie
 
Регистрация: 02.02.2004
Сообщения: 34

Die_Slogan Путь к славе только начался
Хыы, кривости кода у всех хватает
__________________
Наше вам с кисточкой...
Die_Slogan вне форума  
Старый 27.07.2004, 16:07     # 13
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Die_Slogan
я не про ту, которая у всех, а ту, на которую говорят "ну работает же, чего лезть-то?" :-)
__________________
Nunc est bibendum
is_absent вне форума  
Старый 27.07.2004, 18:25     # 14
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
есть две вещи, которые следует различать.

1. элементарная "безграмотность" программиста.
2. используемая методология.

иногда вторым оправдывают первое
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 27.07.2004, 20:02     # 15
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
эээ... мы несколько ушли от темы.. может в отдельное обсуждение выделить данный вопрос? или попросить админов создать раздел.. типа "обсуждение качества кода"
__________________
Nunc est bibendum
is_absent вне форума  
Старый 30.07.2004, 21:19     # 16
BetDeD
Newbie
 
Аватар для BetDeD
 
Регистрация: 03.02.2004
Адрес: Вселенная
Пол: Male
Сообщения: 45

BetDeD Известность не заставит себя ждать
А в качестве чего лучше "прикрутить" PHP к Apachе (на локалхосте)?
В качестве модуля или CGI binary?
И в чём вообще разница?
BetDeD вне форума  
Старый 30.07.2004, 21:35     # 17
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
BetDeD
пятый PHP пока рекомендуют ставить как CGI, четвертый как модуль апача. разница, если не вдаваться в подробности в том, что php, стоящий как модуль апача имеет больше возможностей. и вроде как больше защищен.
__________________
Nunc est bibendum
is_absent вне форума  
Старый 30.07.2004, 22:19     # 18
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
у меня стоит php5 как модуль к apache2.
php4 как модуль к apache1.3.x.
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 30.07.2004, 23:14     # 19
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Sheryld: а где Xml Schema?!
Да вроде на месте.
RaZEr вне форума  
Старый 30.07.2004, 23:34     # 20
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
а что можно сделать, кроме как проверить xml-документ на соответствие данной схеме? это не серьезно
__________________
убрано по просьбе администратора
Sheryld вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:10.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.