Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146

Не знаю с чего начать в ООП

27.05.2012, 19:06. Показов 8532. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, вообщем дело такое, вроде бы прочел не одну книгу по ооп на php теоритически вроде все знаю, но не знаю как начать писать сайт. МОгли бы вы выложить пример не большого сайта на ооп. Вопрос адресован профи)Очень жду и надеюсь на Вас.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2012, 19:06
Ответы с готовыми решениями:

Не знаю с чего начать
Здравствуйте! Я решил начать изучать OpenGl и не знаю какую книгу выбрать на русском языке. Посоветуйте что-нибудь.

Не знаю с чего начать:(
Товарищи программисты подскажите с чегко начать писать данную программу: Может кто нибудь сможет написать последовательность...

Не знаю с чего начать
Здравствуйте! Я начинающий, помогите мне пожалуйста с API. Нужно, чтобы приложение выдавало картинки, по тегам введенным в поисковой...

55
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146
07.06.2012, 11:18  [ТС]
Студворк — интернет-сервис помощи студентам
Давайте по другому. Вот сайт-визитка например. Из каких объектов он состоит?
Гостевая книга, галерея,новости?
0
29 / 29 / 4
Регистрация: 08.12.2009
Сообщений: 106
07.06.2012, 12:26
Ну вот например сейчас любой сайт, даже сайт-визитка не обходится без БД, вот попробуй для практики написать класс работы с БД и класс который выводит контент....
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
07.06.2012, 12:27
Цитата Сообщение от devilin Посмотреть сообщение
Из каких объектов он состоит?
Гостевая книга, галерея,новости?
по разному можно проектировать,ну скажем
каждая новость объект
юзер объект
каждая фотка в галереи объект
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
07.06.2012, 13:28
Если нужно ООП ради ООП то без разницы что будет объектами.
0
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146
07.06.2012, 13:29  [ТС]
GuardNW, класс для работы с БД хоть как-то ясно)
crautcher, это сколько объектов будет в одной галереи?1000 фоток - 1000 объектов?
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
07.06.2012, 13:35
класс для работы с БД хоть как-то ясно)
ясно - это если ясно что для этого используется как правило не класс вообще а синглетон.

это сколько объектов будет в одной галереи?1000 фоток - 1000 объектов?
а ты собираешся вытаскивать на страницу 1000 фоток сразу?
0
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146
07.06.2012, 13:39  [ТС]
caballero, да про шаблон одиночку я слышал тоже.
Конечно нет)Ладно предположим объект это фото. А какие методы будут у него?ссвойства ясно ширина высота например.

Добавлено через 1 минуту
Вывод фотки например да?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
07.06.2012, 13:45
Цитата Сообщение от devilin Посмотреть сообщение
это сколько объектов будет в одной галереи?1000 фоток - 1000 объектов?
вы что будете выкладывать одну страницу 1000 фоток ? обычно пагинация идет
0
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146
07.06.2012, 13:46  [ТС]
crautcher, я уже ответил на это)естественно нет)
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
07.06.2012, 13:52
Цитата Сообщение от devilin Посмотреть сообщение
какие методы будут у него?ссвойства
ну фото значит урл фотки , путь , автор , время заливки , там рейтинг какойто , хеш , высота длина , описание , тайтл - да много всего может быть , мы слишком обстрактно говорим .
0
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146
07.06.2012, 13:53  [ТС]
crautcher, Свойства как раз таки я понял)А методы?Вывод фотки?удалене фотки?
Ну я и хочу абстрактно говорить)Кстати кто может посоветовать книгу о ООП чтоб для чайника?)
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
07.06.2012, 13:54
Ладно предположим объект это фото. А какие методы будут у него?ссвойства ясно ширина высота например.
Методов может и не быть. С фотками там простая структура. У галерей уже могут быть методы - выбрать фотки удалить, добавить.
Еще есть такая полезная штука как паттерн Active Record реализаций и примеров полно. как раз подходит для сущностей которые хранятся в БД по принципу строка-объект..
0
 Аватар для Lawlietb32
14 / 14 / 7
Регистрация: 31.03.2011
Сообщений: 118
17.06.2012, 22:18
Доброго времени суток! Я вот тоже решил подружиться с ООП в PHP почитал тему и решил попробовать написать небольшой класс работы с БД... хотелось бы услышать мнения людей, которые в этом деле уже давно)

Вот собственно код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
class DB 
{
    function DB()
    {
        $mylocation = "localhost";
        $mydb = "TEST";
        $mylogin = "root";
        $mypass = "";
        
        $dbcnx = @mysql_connect($mylocation, $mylogin, $mypass);
        @mysql_select_db($mydb, $dbcnx);
    }
    
    function Add() // первый аргумент = таблица, а дальше значения
    {
        if (func_num_args() > 1)
        {
            $sql = "INSERT INTO " . func_get_arg(0) . " VALUES ('NULL', ";
            for ($i=1; $i<func_num_args(); $i++)
            {
                if ($i == func_num_args()-1)
                    $sql = $sql . "'" . func_get_arg($i) . "');";
                else
                    $sql = $sql . "'" . func_get_arg($i) . "', ";
            }
            echo $sql;
            mysql_query($sql);
        }
    }
    
    function get_id_field($tbl)
    {
        $sql = mysql_query("SHOW COLUMNS FROM " . $tbl);
        while ($res = mysql_fetch_array($sql))
        {
            if ($res['Key'] == 'PRI' && $res['Extra'] == 'auto_increment')
                return $res['Field'];
        }
    }
    
    function Edit() // 1 аргумент - таблица, 2 - ID, 3 - изменяемый столбец, 4 - новое знач.
    {
        if (func_num_args() == 4)
        {
            $tbl = func_get_arg(0);
            $id = func_get_arg(1);
            $column = func_get_arg(2);
            $val = func_get_arg(3);
            $id_field = $this->get_id_field($tbl);
            $sql = "UPDATE " . $tbl . " SET " . $column . " = '" . $val . "' WHERE " . $id_field . " = '" . $id . "';";
            mysql_query($sql);
        }
    }
    
    function Delete() // 1 аргумент - таблица, 2 - ID
    {
        if (func_num_args() == 2)
        {
            $tbl = func_get_arg(0);
            $id = func_get_arg(1);
            $id_field = $this->get_id_field($tbl);
            $sql = "DELETE FROM " . $tbl . " WHERE " . $id_field . " = '" . $id . "';";
            mysql_query($sql);
        }
    }
}
?>
Естественно... я писал на скорую руку... без обработок исключительных ситуаций и прочего... просто хотел по быстрей показать, чтобы молги быстрей направить в нужном русле))
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
17.06.2012, 22:48
экранирование где?

ты пошел не по тому пути. ты не должен в классе СУБД писать методы типа Delete, Edit. Там должен быть один полезный метод - query(), принимающий первым параметром SQL запрос, а последующими (как вариант) - данные

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

посмотри как сделано расширение mysqli или PDO - их API. и все поймешь.
1
 Аватар для Lawlietb32
14 / 14 / 7
Регистрация: 31.03.2011
Сообщений: 118
18.06.2012, 01:08
Василий Макогон, ну да... с функцией query было бы все короче) Не могу понять как реализовывается их prepare со знаками вопросов? Как они потом подменяются на нужные значения? Глобальные переменные класса?
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
18.06.2012, 01:24
Цитата Сообщение от Lawlietb32 Посмотреть сообщение
Не могу понять как реализовывается их prepare со знаками вопросов? Как они потом подменяются на нужные значения? Глобальные переменные класса?
func_get_args
глобальные переменные и ООП не сочетаются
1
 Аватар для Lawlietb32
14 / 14 / 7
Регистрация: 31.03.2011
Сообщений: 118
18.06.2012, 02:05
А если так?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class DB 
{
    var $sql;
    
    function prepare($sql)
    {
        $this->sql = $sql;
    }
    
    function execute($a)
    {
        while(count($a) > 0)
            $this->sql = preg_replace('/\?/', array_shift($a), $this->sql, 1);
        mysql_query($this->sql);
    }
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
18.06.2012, 10:38
что так? это работает?
0
 Аватар для Lawlietb32
14 / 14 / 7
Регистрация: 31.03.2011
Сообщений: 118
18.06.2012, 10:57
Василий Макогон, работает... примерно так:
PHP
1
2
3
4
5
$ar = array();
$ar[] = "123";
$mybd = new DB;
$mybd->prepare("INSERT INTO users VALUES('NULL', ?)");
$mybd->execute($ar);
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
18.06.2012, 11:02
а если много параметров в массиве и запросе? а если они не совпадают?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2012, 11:02
Помогаю со студенческими работами здесь

Не знаю с чего начать
Добрый день! Мне нужно сделать хранилище данных формата pdf с возможностью поиска. В институте изучал Access, но после работать с ним...

Не знаю с чего начать
Доброго времени суток всем. Нужна программа для склейки видео/звуковых дорожек MP4. При этом видео всегда одной продолжительности. Будет...

Не знаю с чего начать писать
Ребята! Доброго времени суток. В общем дали задание написать программу точней web-приложение которое будит работать на всех платформах...

не знаю с чего начать проект
Здравствуйте! Поставили задачу написать программу, да такую, чтобы могли пользоваться 6 пользователей одновременно. И результат...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru