• Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Андрей Андреев: Указать в документации или явно в описании php-скрипта обязательные параметры, как мне кажется несложно, да и на основании чего, как ни этого фротенд разработчик будет вообще писать запрос и если там написано что есть обязательные параметры и они перечислены, то наверное несложно будет догадаться почему сервер на запрос без них будет отвечать "Переменная blabla пустая"
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Сергей Собко: Спасибо за развёрнутый ответ, наверное Ваш ответ дал мне наибольшее понимание из всех ответов здесь на данный момент. Я попробую писать на ООП и использовать в следующем проекте например Yii.

    Но всё же замечу, что помнить название объектов, например $docs, $user и т.д необходимо для работы в таком стиле, следовательно помнить функции на подобии user_delete() ничем не сложнее чем помнить связку $user->delete(), исходя из этого ничто не мешает написать функции с приставкой и уникальной логикой, которые по удобству скорее всего уступать ООП не будут. По факту так выходит некое процедурное псевдо-ООП, которое, как мне кажется, в некоторых случаях будет всё же удобнее.

    Но ещё раз спасибо за Ваш пример и Вы действительно помогли мне понять суть этих ухищрений с объектами и классами.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Сергей Собко: Но разве тогда тогда не придётся писать крайне похожую функцию delete кучу раз для разных объектов?

    Например только что написал функцию:
    //Сюда конечно не помешает добавить проверку, на наличие $type в каком-то массиве с разрешёнными для удаления таблицами, но тем не менее
    function delete($obj,$type){
    $type = ($type != "") ? $type : "users";
    mysqli_query($bd,"DELETE FROM `$type` WHERE `id` = '$obj' LIMIT 1");
    }

    А в ООП, если я правильно вас понял, придётся писать 10 раз эту функцию для каждого объекта, если их 10 меняя только $type на `users`, `sites` и т.п
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Андрей Андреев: Элементарно, можно в die прописать имя файла и переменную, которая не подошла, ничего сложного в этом нету. Но как правило проблем с этим никаких нету, с чего вдруг переменной не будет, если она обязательна при посылке через ajax? Единственные варианты, что я вижу это:
    - Кто-то пытается сделать запрос искусственно
    - Пользователь не указал данных, но на клиенте мы проверяем наличие обязательных данных перед отправкой. Даже если каким-то чудом ajax послался в худшем случае ничего просто не произойдёт, ибо сервер ничего не отдаст и не выполнит, а клиент получив пустоту или ошибку, например "empty-error" обработает и покажет пользователю, что он не заполнил обязательные поля.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Спасибо за ответ, я слышал уже все эти аргументы, просто на практике не могу понять, что мешает понимать процедурный стиль без классов, что мешает командной разработке?

    Вот вырезка, я всегда стараюсь всё комментировать, и называть функции адекватно:
    //Подключаем функции работы с БД
    @include_once("php/mysql.php");
    //Подключаем функции работы с пользователем
    include("php/fuser.php");
    
    //Инициируем подключение к БД
    _mysql_init();
    
    //Инициируем получение данных о пользователе и сохранение их в массив
    $current_user = _userdata();
    
    //Получаем аватар человека из массива 
    $user_avatar = $current_user["avatar"];


    Неужели этот код сложен?
    Его сложно понять или продолжать?
    Все функции внутри также прокомментированы, названы по назначению и удобно разделены.

    Мне почему-то интуитивно кажется, что почти все понимают и знают процедурный стиль (кроме людей пришедших из JS, например), но не все привыкли и понимают ООП, так как это всё же надстройка над PHP, созданная вроде как для создания удобства.
    Исходя из этого чисто и просто написанный процедурный стиль должно понять больше людей и как следствие передача разработки от одного человека в руки другого должна происходит проще, разве я не прав? Я видел кучу проектов на ООП и мне было сложно их понять, финальная строчка может выглядеть конечно очень красиво, например:
    $mysql->get_userdata()->avatar()
    Но когда мне вдруг необходимо понять как это работает или что-то поменять, то лично для меня это превращается в настоящую пытку, где применяемые функции цепляются класс за класс, за ещё один класс, приходиться лазать по куче файлов чтобы собрать всю логику функций воедино, прыгать от одного объекта к другому и т.д
    Я могу предположить что это мой субъективный опыт, но уж так вышло, что пока ничего иного я не встречал. Те же фреймворки мне также не поняты, они должны ускорять разработку, однако:
    • Разве не нужно тратить время на изучение фреймворка? Т.е по-новому учиться для решения задач, которые решать ты уже умел?
    • Выход за штатные рамки предусмотренных инструментов создаёт необходимость писать надстройку над надстройкой в виде фреймворка, разве это не костыль? Т.е что если вдруг чего-то в фреймворке нету (а скорее всего так и есть), но это что-то явно взаимодействует с другими функциями, которые были в фреймворке, значит придётся дописывать в созданную архитектуру что-то своё и тем самым усложнять вход в проект ещё больше.


    Может я и не прав, но объясните мне почему, пожалуйста.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Сергей Соколов: Не курили, благодарю, пыхну на днях :D
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Никита: Данный метод используется в скриптах, кои человек вообще видеть не должен, к ним происходит обращение через ajax и если вдруг в этом обращении не хватает заранее предусмотренных данных, то безопасности ради скрипт просто отдаёт пустоту.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Теперь представим, что вам нужно будет удалить объекты. В ооп стиле вам нужно будет просто вызвать метод ->delete для каждого объекта. А в процедурном вы будете писать 10 функций delete с разными названиями? Или одна, но внутри вы будете писать 10 проверок, что бы понять, какие данные к вам пришли и как их правильно обработать. А если таких объектов будет 100?


    Чтобы делать универсальный метод delete в ООП, разве не придётся также делать внутри проверку на тип объекта, чтобы правильно сформировать логику? Если придётся, то что мешает сделать аналогичную проверку в обычной функции? Если ничего не мешает, разве это не ставит под вопрос весь этот аргумент?

    Может я просто не понял.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Мне было бы сильно сложнее продолжать писать проект на ООП, чем на процедурке с понятным названием функций, а если бы ещё и комменты были, кои я всегда пишу перед передачей, так я вообще был бы счастлив.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Я вижу прогресс в увеличении функциональности, без потерь в скорости или в идеале с увеличением её.

    Но чем больше я пишу, тем больше переживаю, а что, если вдруг есть какой-то сакральный смысл в том, что делают все те люди на гитхабе, оверфлове, форумах и я этот смысл какой-то упустил.

    Делаю тест по скорости, того что пишут они, и того что я пишу я, работает одинаково быстро, но у них код строк на 10 больше и причин для этого никаких, просто ООП делают, а я никак понять не могу - зачем? Это же столько времени и удобств вроде вообще не прибавляет.

    Мне вот понять процедурный код который читается как книга легче, идёшь по нему и видишь что происходит, а ООП кажется каким-то диким лесом, когда суть кода приходится постоянно ловить, не понятно что к чему применяется и перебрасывается то в начало, то в конец, не говоря уже о разгребании объявления всего этого для понимания происходящего.

    Я и пишу пока дальше, просто переживаю, что я не профессионал и как вижу, многие другие люди, зачем-то без понятной мне причины пишут код совершенно иначе.
  • Как проверить на дружбу/подписку пользователя VK?

    w_b_x
    @w_b_x Автор вопроса
    entermix: Ясно, спасибо, спрашивал чтобы этого избежать)
  • Как проверить на дружбу/подписку пользователя VK?

    w_b_x
    @w_b_x Автор вопроса
    Проверяет не двух нужных пользователей, а текущего пользователя и некий id.
    Нужно два чужих id проверять
  • Как изменить статус VK группы?

    w_b_x
    @w_b_x Автор вопроса
    Большое спасибо, надеюсь поможет :)
  • Как выглядит правильная архитектура чата?

    w_b_x
    @w_b_x Автор вопроса
    Огромное спасибо, опасения по поводу JOIN'ов видимо идут от непонимания механизма их работы.
  • Как свернуть массив данных в строчку?

    w_b_x
    @w_b_x Автор вопроса
    Спасибо. А что будет адекватнее, несколько столбцов или serialize?
  • Создание таблицы на основе трёх таблиц и вывод в PHP, как?

    w_b_x
    @w_b_x Автор вопроса
    Извиняюсь за качество скриншотов, вот ссылки на нормальные версии:
    Так выглядит таблица users: rgho.st/8HnGhs67X
    Так выглядит таблица projects: rgho.st/6dwzVk5CC
    Так выглядит таблица personal: rgho.st/8rGgKCrfv
    Так выглядит весь результат вашего запроса: rgho.st/76qq4qxmQ
  • Создание таблицы на основе трёх таблиц и вывод в PHP, как?

    w_b_x
    @w_b_x Автор вопроса
    Ох, спасибо огромное! Чувствуется, что вы разбираетесь в вопросе.
    Правда, почему-то ваш запрос создаёт солянку, возможно я дал неполную информацию.
    Скину вам скриншоты, может быть всё таки спасёте, это было бы просто удивительно:

    Так выглядит таблица users: rgho.st/8HnGhs67X/thumb.png
    Так выглядит таблица projects: rgho.st/6dwzVk5CC/thumb.png
    Так выглядит таблица personal: rgho.st/8rGgKCrfv/thumb.png
    Так выглядит весь результат вашего запроса: rgho.st/76qq4qxmQ/thumb.png

    Как видите в результате одна строчка и в столбце photos все фото всех пользователей одновременно.
    А необходимо создать таблицу с данными проектов и доп. столбцом в котором указать через запятую для каждого фото людей, которые в этот проект входят. Как если бы был обычный SELECT из projects, но с ещё одним столбцом, в котором через запятую указаны аватарки людей.

    Выручите?
  • Парсинг авторизованной страницы FaceBook - как?

    w_b_x
    @w_b_x Автор вопроса
    Виталий: Я бы и рад забыть, да только других вариантов тут не вижу, собственно для этого вопрос и задал. Те ссылки на FB api что мне дали я раньше и сам видел, но для поставленной задачи решения сделать не сумел..
  • Как заменить существующие таблицы при импорте phpmyadmin?

    w_b_x
    @w_b_x Автор вопроса
    В новой чистой БД тоже присутствуют системные файлы, которые опять не позволяют бд импортнуть(
  • GROUP BY съедает данные, почему?

    w_b_x
    @w_b_x Автор вопроса
    Кажется решил проблему следующим образом:
    SELECT `date`,
    SUM(case when `user` = 'new_sites' then cnt else 0 end) as new_sites,
    SUM(case when `user` = 'new_users' then cnt else 0 end) as new_users,
    SUM(case when `user` = 'new_leads' then cnt else 0 end) as new_leads
    FROM (
    SELECT `date`, COUNT(*) AS cnt, 'new_sites' as user FROM `l_sites` GROUP BY `date`
    union all
    SELECT `date`, COUNT(*) AS cnt, 'new_users' as user FROM `l_users` GROUP BY `date`
    union all
    SELECT `date`, COUNT(*) AS cnt, 'new_leads' as user FROM `l_leads` GROUP BY `date`
    ) as T GROUP BY `date`

    Спасибо, вы подсказали верный путь :)