С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607

Логика приложения на PHP

08.03.2017, 19:01. Показов 1276. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня есть класс сайт и его методы:
1. Прикрепление алиасов (доменов) к сайту
2. Открепление доменов (алиасов) от сайта
3.Редактирование основной информации сайта
4. Удаление сайта
5.Получение информации о сайте
6.Создание нового сайта
Вопрос: в конструкторе класса должен быть метод получения информации о сайте, или метод создания нового сайта? И можно ли созданный объект класса сохранить в сессии?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2017, 19:01
Ответы с готовыми решениями:

Логика приложения
День добрый! Вообщем тут получил задание написать крестики/нолики, решил делать на том, что хоть чуток знаю (C++/Qt) и так поле решил...

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

Логика построения приложения
Главная форма public partial class GlobalFormApp : Form { public GlobalFormApp() { ...

12
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.03.2017, 19:14
Что значит
Цитата Сообщение от caesarnn Посмотреть сообщение
в конструкторе класса должен быть метод
Цитата Сообщение от caesarnn Посмотреть сообщение
можно ли созданный объект класса сохранить в сессии?
http://php.net/manual/ru/class.serializable.php
0
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607
08.03.2017, 19:24  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Что значит
Объясню. у меня есть функция для создания сайта и для получения информации о нём.Все остальные функции можно применять только к уже созданному сайту. Т.е. я получаю информацию о сайте, в свойствах объекта прописываю полученную информацию, а потом уже смогу применять функции.
PHP
1
2
3
4
//создаём новый объект класса site, получаем всю информацию
$site = new site($siteid);
//привязываем алиас (используем метод класса)
$site->linkalias($domainid, $vhostid);
НО есть ещё функция addsite(), которая создаёт новый сайт.
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.03.2017, 19:44
Сайт не должен уметь создавать самого себя.
Варианты решения:
1) сделать метод addsite() статическим
2) сделать отдельный класс фабрику, для создания сайтов
3) создавать сайт через конструктор, он для этого и предназначен.

А вообще, очень запутанно объясняете. У вас какой-то божественный класс походу, разделите его на части.
0
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607
08.03.2017, 19:53  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
3) создавать сайт через конструктор, он для этого и предназначен.
Вот я и хочу создавать сайт через конструктор класса. Класс у меня никакой не божественный.
Цитата Сообщение от tarasalk Посмотреть сообщение
сделать метод addsite() статическим
В каком смысле? Что такое статический метод?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.03.2017, 19:59
Цитата Сообщение от caesarnn Посмотреть сообщение
Вот я и хочу создавать сайт через конструктор класса
В чем проблема? Передайте в конструктор необходимые данные и все.
Цитата Сообщение от caesarnn Посмотреть сообщение
В каком смысле? Что такое статический метод?
static
Цитата Сообщение от caesarnn Посмотреть сообщение
Класс у меня никакой не божественный.
Судя по незнанию статических методов, вы также не знаете что такое божественный класс.
0
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607
08.03.2017, 20:28  [ТС]
Про статический метод понял, но это вроде как моветон сейчас.

Добавлено через 3 минуты
Цитата Сообщение от tarasalk Посмотреть сообщение
В чем проблема? Передайте в конструктор необходимые данные и все.
Есть ещё функция для получения данных сайта. Эта функция присваивает значения некоторым свойствам класса. При создании сайта в функцию передаётся 5 аргументов, а при получении информации о сатйе - только 1.

Добавлено через 18 минут
Цитата Сообщение от tarasalk Посмотреть сообщение
Судя по незнанию статических методов, вы также не знаете что такое божественный класс.
Про божественный класс понял. В таком случае, создам новый класс с одним единственным методом-конструктором для создания сайтов.

Добавлено через 1 минуту
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class sitefactory {
    public function __construct ($mainname,$charset,$email,$index,$login) {
        $mysqli = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
        $check = $mysqli->query("SELECT unid FROM vhosts WHERE mainname = '$mainname'");
        if($check->num_rows>0) { echo "Произошла ошибка. Доменное имя, которое Вы ввели, уже привязано к другому сайту!";exit;}
        $mysqli->query("INSERT INTO vhosts (mainname,charset,email,index,userid) VALUES ('$mainname' , '$charset', '$email' , '$index' , '$login')");
        Include 'apacheconf.php';
        Include 'nginxconf.php';
        $vhostid = $mysqli->mysqli_insert_id;
        file_put_contents ("/etc/apache2/sites-available/$vhostid.conf", $apacheconf);
        file_put_contents ("/etc/nginx/sites-available/$vhostid", $nginxconf);
    }
}
Добавлено через 4 минуты
И создание сайта тогда будет выглядеть так?
PHP
1
$newsite = new sitefactory ($mainname,$charset,$email,$index,$login)
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
08.03.2017, 20:58
Цитата Сообщение от caesarnn Посмотреть сообщение
Про божественный класс понял
И все равно запихали в конструктор кучу всего.

Нормальный конструктор это примерно так:
PHP
1
2
3
4
public function __construct($param1, $param2 = null) {
    $this->param1 = $param1;
    $this->param2 = $param2 ?? 1;
}
Цитата Сообщение от caesarnn Посмотреть сообщение
И создание сайта тогда будет выглядеть так?
Нет. У вас получилось что фабрика сайтов это и есть сайт. Фабрика должна возвращать объект класса "сайт".

Собственно рано вам еще фабрики пилить, изучите ООП нормально.
0
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607
08.03.2017, 21:18  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class site
{
    public $id;
    public $mainname;
    public $aliases;
    public $charset;
    public $email;
function __construct($mainname,$aliases,$charset,$email)
{
    $this->mainname = $mainname;
    $this->aliases = $aliases;
    $this->charset = $charset;
    $this->email = $email;
return $this;
}
}
Добавлено через 11 минут
Цитата Сообщение от tarasalk Посмотреть сообщение
Нет. У вас получилось что фабрика сайтов это и есть сайт. Фабрика должна возвращать объект класса "сайт".
Код, который я написал выше, относится непосредственно к сохранению сайта.
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
09.03.2017, 15:54
Цитата Сообщение от caesarnn Посмотреть сообщение
return $this;
конструктор, ничего не возвращает
0
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607
09.03.2017, 20:34  [ТС]
Хорошо, учту.
А если попробовать так - при создании сайта с помощью функции
PHP
1
func_num_args()
считаем количество аргументов,переданных функции, если аргумент 1 - то получаем информацию о сайте, если аргументов 5 - создаём новый сайт.

Добавлено через 24 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   function __construct($mainname,$aliases,$charset,$email,$id=0)
    {
if ($id!=0) {
    $mysqli= new mysqli ($dbhost,$dbuser,$dbpass,$dbname);
    $getquery = $mysqli->query("SELECT * FROM vhosts WHERE unid = '$id'");
    $getaliasesquery = $mysqli->query("SELECT name FROM domains WHERE vhost = '$id'");
    $sitearr = $getquery->fetch_assoc();
    $mainname = $sitearr['mainname'];
    $email = $sitearr['mainname'];
    $charset = $sitearr['charset'];
    $aliasarr = $getaliasesquery->fetch_assoc();
    $aliases = $aliasarr;
}
 
        $this->mainname = $mainname;
        $this->aliases = $aliases;
        $this->charset = $charset;
        $this->email = $email;
    }
 
}
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,908
09.03.2017, 20:52
caesarnn, жесть. Верно выше написали.
Цитата Сообщение от tarasalk Посмотреть сообщение
Собственно рано вам еще фабрики пилить, изучите ООП нормально.
0
 Аватар для caesarnn
57 / 57 / 18
Регистрация: 22.05.2015
Сообщений: 607
09.03.2017, 21:49  [ТС]
На одном форуме предлагают сделать 2 статических метода
PHP
1
2
public static create () {}
public static getInstance ($id) {}

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
class Site {
    public $id;
    public $mainname;
    public $aliases;
    public $charset;
    public $email;
 
 
 
    function __construct($mainname,$aliases,$charset,$email,$id)
    {
        $this->mainname = $mainname;
        $this->aliases = $aliases;
        $this->charset = $charset;
        $this->email = $email;
    }
public static function getinstancebyid ($id) {
    $mysqli= new mysqli ($dbhost,$dbuser,$dbpass,$dbname);
    $getquery = $mysqli->query("SELECT * FROM vhosts WHERE unid = '$id'");
    $getaliasesquery = $mysqli->query("SELECT name FROM domains WHERE vhost = '$id'");
    $sitearr = $getquery->fetch_assoc();
    $mainname = $sitearr['mainname'];
    $email = $sitearr['mainname'];
    $charset = $sitearr['charset'];
    $aliasarr = $getaliasesquery->fetch_assoc();
    $aliases = $aliasarr;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2017, 21:49
Помогаю со студенческими работами здесь

Логика структуры приложения
Добрый день всем участникам форума, в частности Vov1k... Появился новый вопрос. У меня есть активность в которой установлен listview1....

Логика многопоточного приложения
Знаю, что скорее всего поднимался вопрос, но хочет немного поспрашивать знатоков. Реально ли сделать на Windows Forms игру подобие...

Структура и логика работы приложения Windows...
Здравствуйте, дорогие товарищи! Предпринимаю попытки в качестве хобби освоить MS VISUAL C++. Причем уже не в первый раз. В свое время...

Приложения определенного интеграла: ВУЗ vs Логика
Мне всегда казалось, что при определении с помощью определенного интеграла площадей и т.д., общая площадь на отрезке является суммой всех...

Старт. Логика построения клиентского и административного приложения
В проекте использую spring framework. Есть клиентское приложение, в основном работает с контроллером для получения информации. Необходимо...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru