Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Заблокирован

PHP приложение на чистом процедурном стиле

27.09.2018, 20:54. Показов 5330. Ответов 55

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Изучаю пхп и пытаюсь написать что то большое. Но пока не изучил ООП. Все говорят что можно большие приложения и без ООП написать. Но не смог найти примеры таких реализации. Что имело бы единую точку входа, использовало что то вроде роутинга и легко поддерживался и расширялся. Если кто нибудь знает где найти, имеет соображения или имеет какие то исходники прошу поделиться?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2018, 20:54
Ответы с готовыми решениями:

Создание движка только на процедурном стиле
Хочу создать приличный движок на процедурном без ООП. Каковы будут последствия? :umnik:

[Mono] Приложение на чистом .Net и Mono
Здравствуйте! Подскажите, правильно ли я понял? Не обязательно приложение писать на моно, а можно готовое (на .Net) запустить там, где есть...

Оконное приложение на чистом Win API
Один японец сделал, ради демки, оконное приложение на чистом Win API. Win API совсем не функциональное, и в нём есть сложность, связанная с...

55
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
29.09.2018, 14:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть вводить наследование, которого специалисты по ООП рекомендуют держаться подальше.. Тренд такой..
Впервые слышу. Просто не стоит пихать его везде.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А с того, что пользователь вашего продукта просто не сумеет этого сделать.. За редкими исключениями.. Пользователю вдруг захотелось иметь расширенный функционал. Он обращается к вам, как разработчику продукта, сделать новый функционал за денюжку, при этом ничего не меняя в коде руками, а просто скачав плагин.
Это уже совсем другая задача.
Для работы с плагинами в системе изначально должен быть соответствующий код, неважно ООП или процедурный. В ООП это может быть например класс PluginLoader, который берет плагины из папки и работает с ними через интерфейс.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
29.09.2018, 14:43
Цитата Сообщение от tarasalk Посмотреть сообщение
В ООП это может быть например класс PluginLoader, который берет плагины из папки и работает с ними через интерфейс.
А если нужно всё-таки изменить какой-либо базовый класс? В процедурном просто добавим новую функцию и всё. А здесь приходится создавать новый класс, а новый класс это дополнительные тормоза, зависимости и усложнение кода, в котором потом трудно разобраться. На каждый новый чих новый класс.. Не кажется ли это достаточно глупым подходом?
Глобальные переменные, как говорят - зло, однако в классе те же самые глобальные переменные просто внутри класса, а методы на них жёстко завязаны. Да ещё каждый класс тянет за собой внутри много всего на всякий случай и по разному поводу, а обьектам иногда этого не нужно, ибо работают с одним методом, отсюда перерасход памяти.
1
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
29.09.2018, 15:29
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А здесь приходится создавать новый класс, а новый класс это дополнительные тормоза, зависимости и усложнение кода, в котором потом трудно разобраться. На каждый новый чих новый класс.. Не кажется ли это достаточно глупым подходом?
Согласен глупо. Что это у вас за мания создавать классы/функции на каждый чих? Это в процедурке так принято?
Если мне нужно изменить класс, то я меняю класс. Проблем в этом не вижу.

Вы напишите код аналогичный как у andyyy, но в процедурном стиле. Сравним "тормоза, зависимости, сложность кода".

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Да ещё каждый класс тянет за собой внутри много всего на всякий случай и по разному поводу, а обьектам иногда этого не нужно, ибо работают с одним методом, отсюда перерасход памяти.
Это вопрос проектирования. В обычной функции я тоже могу начать тянуть кучу других ненужных функций.

Кстати, может открою для вас америку, но давно уже есть автозагрузчик классов, который грузит только то, что нужно. А у вас небось везде
PHP
1
if($param === true) { include 'test.php'; }
Читабельность - супер
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
29.09.2018, 16:19
Цитата Сообщение от tarasalk Посмотреть сообщение
Вы напишите код аналогичный как у andyyy, но в процедурном стиле. Сравним "тормоза, зависимости, сложность кода".
Будет не более строчек чем у анди.
Цитата Сообщение от tarasalk Посмотреть сообщение
нужно. А у вас небось везде
PHPВыделить код
1
if($param === true) { include 'test.php'; }
Это ваши фантазии. Лично у меня вообще инклюдов нет. Как минимум require, а как максимум require_once. И у меня функции не вызывают друг друга напрямую. Ни одна. У меня всё через конфиги. Всегда, везде и на каждом месте. И тормозов нет ибо конфиги небольшие. Я могу добавить новую функциональность вообще не меняя существующий код, посредством изменения конфигов. И каждая отдельная функция уменя лежит в отдельном файле, поэтому нет тормозов при подключении "простынь" из классов с наборами методов на все случаи жизни..
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
29.09.2018, 19:12
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Будет не более строчек чем у анди.
Так я как бы не количество строчек предлагал сравнить. Что мы, индусы что-ли

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это ваши фантазии. Лично у меня вообще инклюдов нет. Как минимум require, а как максимум require_once. И у меня функции не вызывают друг друга напрямую. Ни одна. У меня всё через конфиги.
Вы просто подменяете понятия. Сути это не меняет. Подключение файла оно и в африке подключение файла. В ООП вместо конфигов идет автозагрузчик классов, который сам знает что нужно подключать, а что нет. Без всяких дополнительных манипуляций.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я могу добавить новую функциональность вообще не меняя существующий код, посредством изменения конфигов
А я могу даже без конфигов. Или наоборот весь код в конфиге. Но все это бред. Конфиг должен быть конфигом, а не создавать новую функциональность.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
И каждая отдельная функция уменя лежит в отдельном файле, поэтому нет тормозов при подключении "простынь" из классов с наборами методов на все случаи жизни..
Вы говорите о божественных классах? Это как бы антипаттерн.
И про какие тормоза вы постоянно говорите я хз. У нас в компании с десяток микросервисов, которые мало того что все ООП, так еще и общаются друг с другом по АПИ и всё нормально.

Сдается мне один из нас все-таки индус. И это точно не я.
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
29.09.2018, 19:39
Цитата Сообщение от tarasalk Посмотреть сообщение
Можно и на ассемблере написать, вот только зачем?
NOD32 написан как раз на Ассемблере, по идее. В итоге - рекордно малые среди всех остальных антивирусов требования к ОС и к компьютеру.

Добавлено через 5 минут
Цитата Сообщение от Rem1993 Посмотреть сообщение
можно большие приложения и без ООП написать
Ну, можно, да.
Цитата Сообщение от Htext Посмотреть сообщение
NOD32
ведь написан. Стало быть, и на РНР можно тоже.
Плюсы ООП - это систематизация, легкость расширения. ООП актуально, в основном, при командной работе, когда часто меняются разработчики. Минусы - тормоза по сравнению с процедурным подходом.
0
Заблокирован
05.10.2018, 00:14  [ТС]
Доброго времени суток! Спасибо всем за такой оживленный спор) Из-за загруженности на работе давно не заходил на форум. Сейчас два часа ночи по нашему времени. На процедурном стиле хотел попробовать для опыта как дань уважения истории ПХП. Ведь он был изначально процедурным. Хороший пример нашел здесь https://elisdn.ru/blog/47/rout... l-managing. И здесь же познакомился с ООП. Прочитал про компосер, шаблонизаторы, пср, и многое друое. Думаю что бы быть востребованным все же придется изучить все это вместе с ООП. Спасибо всем!
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
05.10.2018, 08:23
Это несомненно. Но приложения, написанные с использованием процедурного стиля, - вовсе не извращения, как некоторые тут пытались показать. Они также хорошо поддаются структурированию, поддержке и т.д. Кто этого не понимает, явно ни разу ничего подобного не писал и просто высказывает свои предпочтения на пустой сравнительной базе (по-русски это часто немного по-другому называют). Успехов в освоении языка!
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.10.2018, 10:04
Цитата Сообщение от Phantom-84 Посмотреть сообщение
как некоторые тут пытались показать
Не пытались, а показали. А вот процедурный код никто не показал. Всё свелось к "нам ничего не нужно" мы пишем свои велосипеды с конфигами на каждый чих.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
05.10.2018, 11:46
Цитата Сообщение от tarasalk Посмотреть сообщение
Всё свелось к "нам ничего не нужно" мы пишем свои велосипеды с конфигами на каждый чих.
Класс это не модуль, и даже не компонент, пора бы уже это осознать.
Цитата Сообщение от tarasalk Посмотреть сообщение
А вот процедурный код никто не показал.
Процедурный код понятие абстрактное.
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.10.2018, 12:15
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Класс это не модуль, и даже не компонент, пора бы уже это осознать.
Честно говоря я хз откуда вы это взяли. Данный вопрос мы не обсуждали. В целом с утверждением согласен.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Процедурный код понятие абстрактное.
Есть конкретный ООП пример от andyyy. Ожидается аналог в процедурном стиле от сторонников этого подхода.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
05.10.2018, 14:51
Цитата Сообщение от tarasalk Посмотреть сообщение
Есть конкретный ООП пример от andyyy.
Пример какой-то "непримерный". А чё-нить более вменяемое имеется? Ну, чтобы время своё с умом потратить.
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.10.2018, 17:34
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А чё-нить более вменяемое имеется? Ну, чтобы время своё с умом потратить.
Я так и думал. Невменяемым вам это кажется потому что на в процедурном стиле это будет та еще жесть, тогда как для ООП это тривиальная задача.
В общем примера мы видимо не увидим, ООП -> AUTO WIN.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
05.10.2018, 18:28
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php 
# Author - Fedor Vlasenko, vlasenkofedor@mail.ru php 7
define('METHOD', $_SERVER['REQUEST_METHOD']);
define('URI', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
 
function router($url, ...$args)
{
    (empty($args[1]) || false !== strpos(METHOD, $args[0]))
    && (URI === $url || preg_match('#^' . $url . '$#iu', URI, $match))
    && die(call_user_func_array(end($args), $match ?? []));
}
 
router('/', function () {
    echo 'Index page';
});
 
router('/article/(.*[^/])', 'GET', function (...$args) {
  echo 'Article: ', $args[1];
});
 
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo '404';
Пример в процедурном стиле

От себя хочу отметить, что писать красиво в процедурном стиле вы буде когда выучите ООП
Тогда, когда вы будете четко понимать минусы и преимущества подхода
Холиварить же на данную тему можно много, все равно, что обсуждать какую нотацию использовать в объявлении переменных

P.S. Попробуйте писать на Go
1
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
05.10.2018, 19:24
tarasalk, с вашей космической логикой трудно спорить:
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Но приложения, написанные с использованием процедурного стиля, - вовсе не извращения, как некоторые тут пытались показать.
Цитата Сообщение от tarasalk Посмотреть сообщение
Не пытались, а показали. А вот процедурный код никто не показал.
Психика дороже
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.10.2018, 20:52
Fedor Vlasenko, вот, хоть кто-то код написал. Но, увы, это не аналог примера на ООП.
Очевидно что в проекте на 22 строчки ООП не нужен.
Но что будет при увеличении сложности системы?
Чем заменяется наследование, абстракции... неужели всё дублируется?
Что с областью видимости?
Вот тут неплохо описаны некоторые из проблем, про которые я говорю.
Еще интересно про тесты послушать, как там подменяются зависимости.

Цитата Сообщение от Phantom-84 Посмотреть сообщение
с вашей космической логикой трудно спорить:
Я мог бы конечно ответить в вашем стиле, но так и быть разжую.
Но приложения, написанные с использованием процедурного стиля, - вовсе не извращения, как некоторые тут пытались показать.
Упор здесь идет на показ "извращения", а не показ кода. Именно извращение показали местные "профи", когда вместо редактирования функции предлагается создание новой и разруливание всего через конфиги.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
05.10.2018, 21:28
tarasalk, вы про извращения написали в своем первом сообщении применительно к процедурному стилю в целом.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
05.10.2018, 22:09
Цитата Сообщение от tarasalk Посмотреть сообщение
вот, хоть кто-то код написал
я не только написал, но и
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Попробуйте писать на Go
Ведь там процедурный стиль. Я знаю несколько языков и этот кроссплатформенный функциональный от Google уж очень хорош
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
05.10.2018, 23:40
Цитата Сообщение от Phantom-84 Посмотреть сообщение
вы про извращения написали в своем первом сообщении применительно к процедурному стилю в целом.
Смотрим первое сообщение
Цитата Сообщение от tarasalk Посмотреть сообщение
Ну правильно, потому что никто так не делает. По крайней мере в PHP.
Зачем вообще подобное обсуждать, цепляться к словам, выяснять отношения. По детски как-то.

От ТС есть конкретный кейс - показать примеры проектов с использованием чисто процедурного кода.
Я как бы сразу намекнул что это плохая идея, но адепты процедурок со мной не согласились.
Тем не менее нормальных примеров предоставлено так и не было.
Я видел отсылку на древний PHP Nuke, видел простейший проект на 22 строчки и это в лишний раз подтвердило мое мнение. Процедурки не подходят для серьезных современных PHP проектов. Могу сделать исключение для каких-нибудь super highload, и то там далеко не только процедурки идут.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Ведь там процедурный стиль. Я знаю несколько языков и этот кроссплатформенный функциональный от Google уж очень хорош
Может быть. Но мы обсуждаем PHP. Здесь процедурки - это пережиток прошлого. Тренд очевиден.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
06.10.2018, 00:09
Цитата Сообщение от tarasalk Посмотреть сообщение
Здесь процедурки - это пережиток прошлого
вы глубоко ошибаетесь я же написал выше
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
что писать красиво в процедурном стиле вы будете когда выучите ООП
на сегодняшний день вы до этой стадии не дошли, это факт
есть разные задачи и разные решения для этих задач, решение, язык, реализацию выбирает программист исходя из своего опыта
если вы видите решение только в ООП, то это говорит о ваших знаниях и подходе
другой может это решить красивее и изящнее исходя из своего опыта
и тут чье решение будет быстрее, рациональнее того и тапочки вне зависимости от какого стиля программирования в нем было использовано
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2018, 00:09

Можно ли создать приложение под Android на чистом С++?
Можно ли создать приложение которое содержит только код на С++ без строчки на java? Ну то есть на чистом ndk, и при этом у меня будет...

О чистом коде html,css,js,php
Друзья, я занимаюсь программированием уже более 10-ти лет. Работал уже с разными CMSб фреймворками. Столкнулся с сайтом какого-то чувака...

сайт на чистом php плюсы и минусы
Добрый день. Помогите с советом. Моя дипломная связана с созданием сайта,в котором пользователи могут регистрироваться, оставлять...

Как сделать приложение в стиле Office 2007 в VS2008
Как сделать приложение в стиле Office 2007 в VS2008 ? Если можна подробно, как установить? Буду благодарен и за другой стиль,...

Можно ли в css стиле(на HTML странице) использовать php?
Здравствуйте Задался таким вопросом А можно ли в css стиле(на HTML странице) использовать php? То что оно работать будет я знаю,а вот...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru