[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП в моем примере
maximka787
Ребят разъясните ситуацию. Почитал я Статью twina про ООП, в целом здорово написал. Так вот. Я иногда, когда прога большая, создаю отдельные файлы и названиями func_video.php, func_pictures.php и тд. Эти файлы я создавал как куски кода, "модули". Например у меня файл func_video.php состоит из :
function video($id){
//Реализован поиск нужного видео по id из базы.
//Вставка данных в код плеера видео, заголовок и описание. ну и еще пару элементов и тд.
//Вобщем кода на 20-40 строк

}
Подключаю файл func_video.php к основному index.php (или туда где надо вывести видео):
require_once('func_video.php');
...

video($id); //функция, в которую передаю ID.

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

Так вот стоит привыкать писать тоже самое в классы? Классы, кстати поудобнее будут в этом плане, тк связь между функциями там есть, но в моих и большинстве проектах как видите и функции идеально подходят. Как считаете есть ли смысл выводить информацию через классы, это будет правильней? особенно на стадии развития моего в кодинге :)




Спустя 32 секунды (17.01.2011 - 13:58) maximka787 написал(а):
Прошу прощения, ООП smile.gif

Примечание от sergeiss: заголовок исправил, не парься smile.gif

Спустя 4 минуты, 44 секунды (17.01.2011 - 14:03) linker написал(а):
class Video
{
public static function getVideoById($Id)
{
// Получаем видео из базы
// Создаем объект и возвращаем его

return new self();
}

public function showVideo()
{
}
}


Video::getVideoById(100)->showVideo();

Спустя 10 минут, 17 секунд (17.01.2011 - 14:13) maximka787 написал(а):
linker, ты круто написал, я правда не совсем все понял, но у тебя на мой взгляд много непонятного.
Разве не проще так делать
class Video{
function __construct($id){
$this->id = $id;
}
function vid(){
//conect mysql, full code player
echo 'video='.$this->id;
// full code player
}

}

//$id = $_GET....
$obj = new Video($id);
echo $obj -> vid();


Спустя 22 минуты, 18 секунд (17.01.2011 - 14:35) twin написал(а):
Я бы посоветовал снчала с архитектурой разобраться. Чёто чую там у тебя понапутано. Весь функционал спихал в одну функцию... Зачем?

А уже потом думать, юзать класс или простую функцию.

Вопрос то у тебя звучит примерно так:
Цитата
Вот я тут понаговнокодил, будет ли круче, если этот говнокод еще и в ООП завернуть.


Если завернуть какушку в красивую обертку, она какушкой быть не перестанет. Вот linker неразобравшись уже синглетон присовокупил...
А нужен ли он там? Смотрится красиво, а толку пшик.

Спустя 13 минут, 19 секунд (17.01.2011 - 14:49) maximka787 написал(а):
twin, у меня все по полочкам, есть файлы с функциями и общие файлы. Если уж совсем грубо, то я использую ооп примерно для этого:
Цитата
Хотя встречаются и такие, кто любую, самую простенькую штатную конструкцию типа echo, одевают в три фуфайки....
smile.gif

Я конечно стараюсь оптимизировать коды, и крутость кодинга мне не нужна, но в моих примерах я просто заменил функции классами, не использовав можно сказать их по назначению.

Если уж совсем вкратце, то вместо
video();
я пишу
$obj = new Video($id);
echo $obj -> vid();

Мне что одним методом, что другим без разницы. Это не правильно? smile.gif

Спустя 8 минут, 18 секунд (17.01.2011 - 14:57) twin написал(а):
Да не то чтобы совсем неправильно. Незачем просто.
А вот с функционалом точно что то не то у тебя, судя по обрывкам информации. Покажи полностью функцию video() к примеру.

Спустя 7 минут, 43 секунды (17.01.2011 - 15:05) maximka787 написал(а):
Файл functions.php

function connectdb(){
@ $db = mysql_pconnect('localhost', 'root', '');

if (!$db) { echo 'Не удалось установить соединение'; exit; }
mysql_select_db('test');
}


function video($video){

$query = "select * from films where id='$video'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);

?>
<object id="player" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="532" height="357">
<
param name="movie" value="player.swf" />
<
param name="flashvars" value="file=video.mp4&image=preview.jpg" />
<
embed type="application/x-shockwave-flash"
src="player.swf"
width="520"
height="350"
flashvars="file=video/<? echo $row['file']; ?> />
</object>
<?
echo '<h1>'.
$row['name'].'</h1>';
echo '<p>'.
$row['opisnie'].'</p>';

}



Прочие файлы например index.php

require_once('functions.php');
connectdb();

...
<
body>
...

video($id);
...
</
body>


и функций в файле function.php может быть не 2 а больше, или разделить иногда лучше на разные файлы

Спустя 11 минут, 35 секунд (17.01.2011 - 15:16) twin написал(а):
Ну вот. Если ты еще это и в класс затолкал, то это ярчайшая иллюстрация к недавнему диспуту. smile.gif
Брось, какое ООП, тут приведи всё в порядок. Начни с безопасности, посмотри на разделение логики и вывода. В класс такое точно совать не нужно.

Спустя 12 минут, 48 секунд (17.01.2011 - 15:29) maximka787 написал(а):
Я урезал тут все, чтоб показать суть smile.gif а так тут и безопасность есть и все что нужно. Ну если это в класс бессмысленно пихать то не буду. Просто на заказе нового видео сайта именно видео вызывается на всех страницах. Причем у меня там не 1 параметр, а несколько передается. Вот и думал зачем функцию создавать если классы обычно для этого делаются.

На работу не берут из принципиальных знаний ооп, ну так надо принципиально использовать. Это в итоге, через пару лет породит поколение говнокодеров чую)

Спустя 2 минуты, 19 секунд (17.01.2011 - 15:31) linker написал(а):
twin
Обрати внимание, тут не синглтон. wink.gif

Суть моего примера в разделении получения объекта Video от его представления.

Спустя 1 час, 10 минут, 19 секунд (17.01.2011 - 16:42) twin написал(а):
Цитата
На работу не берут из принципиальных знаний ооп, ну так надо принципиально использовать. Это в итоге, через пару лет породит поколение говнокодеров чую)

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


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.