Download the PHP package o-log/php-router without Composer

On this page you can find all versions of the php package o-log/php-router. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package php-router

Пример использования

Вот пример класса экшена, который выводит страницы термов по адресам вида /term/ID и получает идентификатор терма из адреса:

<?php

namespace PHPRouterDemo;

use OLOG\InterfaceAction;

class DemoTermAction implements InterfaceAction
{
    protected $term_id;

    public function __construct($term_id)
    {
        $this->term_id = $term_id;
    }

    static public function urlMask()
    {
        return '/term/(\d+)';
    }

    public function url(){
        return '/term/' . $this->term_id;
    }

    public function action(){
        echo '<div>TERM ' . $this->term_id . '</div>';
    }
}

Здесь есть:

Класс экшена должен имплементить интерфейс InterfaceAction.

Для того, чтобы вывести ссылку на страницу этого экшена, нужно создать объект экшена (передав конструктору контекст) и вызвать метод url() этого объекта. Например вот ссылка на страницу терма с идентификатором 3:

(new DemoTermAction(3))->url()

Если экшен не использует параметры - можно не писать метод urlMask(), в этом случае метод url() возвращает одновременно и адрес страницы, и маску адреса. Вот пример:

public function url(){
    return '/terms';
}

Возможна ситуация, когда идентификатор объекта отсутствует в адресе в явном виде - например, когда адрес объекта хранится в БД. В таком случае маску адреса возвращать не нужно, а нужно реализовать специальный метод parse():

/**
 * @param $requested_url
 * @return null|RubricFeedPageAction
 */
static public function parse($requested_url){
    $matches_arr = array();

    if (!preg_match('@^(.+)$@', $requested_url, $matches_arr)) {
        return null;
    }

    $term_id = Term::getIdForUrl($matches_arr[1]);
    if (!$term_id) {
        return null;
    }

    $name = self::class;
    return new DemoTermAction($term_id);
}

Такой метод принимает запрошенный адрес и может вернуть или null (если экшен не умеет обрабатывать этот адрес) или объект экшена, которому уже переданы параметры. Также класс экшена должен имплементить интерфейс ParseActionInterface.

POST запросы

Метод action вызывает обработчик независимо от метода запроса. Для роутинга только POST запросов можно использовать метод post(). При использовании этого метода если обработчик подходит, но запрос не POST - будет возвращен код 405.

Какие задачи решает роутер

Генерация адресов для экшенов

Для того, чтобы сгенерировать адрес для экшена, нужно собзать объект экшена с параметрами и вызвать для него метод url().

Удобная навигация по коду

Для генерации адреса и для вывода результата используется один и тот же класс. Поэтому, если в коде где-то генерируется адрес для экшена - можно перейти в класс экшена, просто кликнув в IDE на вызов метода url.

Можно найти все точки в коде, где используется адрес экшена, просто найдя вызовы метода url.

В коде не должно быть имен классов, имен функций и урлов в виде строковых констант

Адреса для экшенов хранятся в коде только в одном месте: в самом экшене. Во всех остальных местах для получения адреса можно использовать вызов метода url объекта экшена, таким образом адреса можно менять централизованно.

Имя класса экшена для роутинга передается роутеру не как строка, а через зарезервированную константу class. Таким образом можно рефакторить классы экшенов, например, переименовывать их, без необходимости находить и менять строки в коде. Также можно находить все использования классов средствами IDE.


All versions of php-router with dependencies

PHP Build Version
Package Version
Requires php Version >=7.1
o-log/php-http Version 0.*
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package o-log/php-router contains the following files

Loading the files please wait ....