Ответы пользователя по тегу PHP
  • Почему выводит неправильно?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Не помогло, потому что это \/ эквивалентно /. В этом нет ничего страшного. Но если вас это беспокоит, то вот
    json_encode($obj, JSON_UNESCAPED_SLASHES);
    Ответ написан
    Комментировать
  • Как отобразить php файл в ответ на get-запрос в NodeJS?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Если вам очень надо именно рендерить PHP, то можете запускать процесс php about.php и перехватывать стандартный вывод. У вас не будет доступа к информации запроса, но вы можете через аргументы передать нужную вам информацию php about.php firstname lastname

    P.S. Всё же не надо так делать, вы создаёте себе много проблем, а PHP вам ну никак тут не нужен. В конце концов вы можете использовать EJS, если вам нужна супер-пупер логика в темплейте.
    Ответ написан
    Комментировать
  • Как идеологически правильно делать Lazy Load и делать ли её вообще?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Есть магический метод __get (с двумя нижними подчёркиваниями)
    class Category
    {
        private $children = null;
    
        public function __get($property)
        {
            if ($property === 'children') {
                if ($this->children !== null) return $this->children;
                else {
                    $this->children = $this->getChildren();
                    return $this->children;
                }
            } else {
                throw 'Undefined property';
            }
        }
    
        private function getChildren()
        {
            // TODO: запрос к базе и получение результата
        }
    }
    
    $category = new Category();
    someAction($category->children); // в первый раз будет запрос
    showSubCategories($category->children); // второй и послудеющий раз возьмёт уже из приватного поля

    А к вопросу нужности - зачастую в ORM это настраивается, какие поля брать сразу, а какие лениво. Так что полностью зависит от задачи.
    Ответ написан
    Комментировать
  • Как вывести следующий элемент в массиве?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    В следующий раз пишите нормально, что вы хотите. Я два раза переписывал код, чтобы понять, что вы хотите. А хотите вы имя первого саб-элемента.
    function getSubName($arr, $elementId) {
        foreach ($arr as $element) {
            if ($element['sub_id'] === $elementId) return $element['name'];
        }
    
        return false;
    }
    
    echo getSubName($arr, 1) . "\n";
    Ответ написан
    Комментировать
  • Можно ли объединять 2 и более классов в одном файле?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Обычно принято выносить каждый класс в отдельный файл, но, например Node для LinkedList вполне приемлемо в том же файле определить
    Ответ написан
    Комментировать
  • Как в php реализовать чпу как в wordpress или opencart чтобы url брались из базы данных mysql?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    Без проксирования или mod_rewrite никак этого не сделать. Запросы обрабатывает в первую очередь веб-сервер, и если ему не сказать, что все запросы должны проксироваться на index.php, он попытается открыть такой путь. А дальше уже после проксирования как раз на PHP берёте из HTTP-запроса URL ищите в базе или вручную прописываете, сравниваете и делайте, что надо, в зависимости от найденой страницы.
    $db = new PDO($dsn, $user, $password);
    $sth = $db->prepare('SELECT * FROM routes WHERE route = :route LIMIT 1');
    $sth->execute([ ':route' => $_SERVER['REQUEST_URI'] ]);
    $result = $sth->fetch(PDO::FETCH_ASSOC);
    
    if (!$result) {
        echo "Not found!\n";
        die();
    }
    
    $routeId = $result['id'];
    
    // ваша логика по обработке запроса или отображения страницы
    Ответ написан