PHP ООП
23 July 2007 – 11:44Вчера потребовалось написать программу (один класс положил под кат), заодно решил посмотреть, каковы успехи коллег-программистов в той же теме. Всё еще очень часто встречаются PHP-скрипты написанные в процедурном стиле, в скрипт валят и представление и логику, причем всё это без единого комментария и так несколько сотен строк.
Почему выгоднее придерживаться ОО подхода? Создал нужный класс, пробенчмаркил, быстродействие устраивает, сохраняшь класс в библиотеке. Всегда можно дописать пару новых методов, если потребуется. Можно использовать готовый класс в другом проекте.
Что б через пол года-год вспомнить, какие я решал задачи и восстановить в голове структуру класса больше минуты не потребуется, а что было бы при написании всего проекта (с классами конфига и т.д.) в процедурном стиле? Ни за минуту, ни за десять все детали вспомнить не удастся, начнется игра в угадайку, с известными последствиями.
Для блога класс изменил, в конструкторе должна быть работа с конфигом.
-
-
class ThumbnailsMake {
-
public $thmbW, $thmbH, $plist;
-
-
public function __construct($thmbW = 100, $thmbH = 100, $plist = ""){
-
$this->thmbW = $thmbW;
-
$this->thmbH = $thmbH;
-
$this->plist = $plist;
-
}
-
-
public function getPics($conf_picdir){
-
$piclist = array();
-
$cdir = opendir($conf_picdir);
-
while(($pic = readdir($cdir)) != false ){
-
if(($pic != ".") && ( $pic != ".." )){
-
if($this->isPic($pic)){
-
array_push($piclist,$pic);
-
}
-
}
-
}
-
$this->plist = $piclist;
-
}
-
-
private function isPic($isp){
-
$ff = substr(strrchr($isp,"."),1);
-
if(($ff == 'jpg') || ($ff == 'jpeg') || ($ff == 'gif') ||($ff == 'png')){
-
return true;
-
}else{
-
return false;
-
}
-
}
-
-
public function makeThmbnl($pic){
-
$size = getimagesize($pic);
-
$pic_t = imagecreatetruecolor($this->thmbW, $this->thmbH);
-
if($size['mime'] == 'image/jpeg'){
-
$pic_n = imagecreatefromjpeg($pic);
-
imagecopyresampled($pic_t, $pic_n, 0, 0, 0, 0, imagesx($pic_t), imagesy($pic_t), imagesx($pic_n), imagesy($pic_n));
-
// header('Content-type: image/jpeg');
-
imagejpeg($pic_t, $conf_lct.$pic);
-
}
-
if($size['mime'] == 'image/gif'){
-
...
-
}
-
if($size['mime'] == 'image/png'){
-
...
-
}
-
imagedestroy($pic_t); imagedestroy($pic_n);
-
}
-
}
-

комментарии (3) to “PHP ООП”
svip -- Jul 30, 2007
Не соглашусь по поводу классов и процедур. Все преимущества которые ты описал для классов с легкостью подходят и для функций.
“Что б через пол года-год вспомнить, какие я решал задачи и восстановить в голове структуру класса больше минуты не потребуется, а что было бы при написании всего проекта (с классами конфига и т.д.) в процедурном стиле? Ни за минуту, ни за десять все детали вспомнить не удастся, начнется игра в угадайку, с известными последствиями.”
Какая разница класс или функция (набор функций).??? мне например для того чтобы вспомнить требуется лищь один коментарий к функции и все. так же наборы функций можно использовать в разных проектах (что и делаю.) Посуди сам - класс - это упорядоченное представление тех же функций. Согласен что внекоторых случаях удобее пользоватся классами а не функциями (но подчеркну что в некоторых а не всегда как пишешь ты.).
Не хотел никого обидеть. Все написанное выше - чисто мое мнение. С уважением Svip
Alex -- Aug 10, 2007
Интересных иерархий на функциях построить не удастся. И потом, как быть с 3 принципами: наследованием, инкапсуляцией, полиморфизмом?
Николай -- Oct 10, 2007
if(($ff == ‘jpg’) || ($ff == ‘jpeg’) || ($ff == ‘gif’) ||($ff == ‘png’)){
return true;
}else{
return false;
}
можно переписать просто как
return (($ff == ‘jpg’) || ($ff == ‘jpeg’) || ($ff == ‘gif’) ||($ff == ‘png’));