1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bullsoft-phalconplus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Phalcon+

Phalcon+ — это облегчённый фреймворк на основе Zephir/C, который базируется на PhalconPHP. Мы стремимся создать комплексное решение для разработчиков Phalcon. Именно благодаря высокой гибкости Phalcon разработчики имеют слишком много вариантов выбора. Иногда обилие вариантов может привести к путанице, поэтому после того, как я прошёл через этот процесс выбора, я записал его и постепенно превратил в текущий Phalcon+. Чтобы каждый разработчик не повторял этот процесс, я решил открыть исходный код Phalcon+, чтобы все могли обмениваться опытом и учиться.

Итак, Phalcon+ не является новым фреймворком, а представляет собой отличную практику использования Phalcon, его доработку и дополнение, что позволяет разработчикам Phalcon легче начать работу и достичь высокого уровня мастерства.

Зависимости:

  • PHP 7.0 или выше;
  • cPhalcon 3.4.x. Перед официальным выпуском версии 3.4.6 необходимо загрузить эту ветку и скомпилировать phalcon вручную с помощью команды zephir build (https://github.com/phalcon/cphalcon/tree/3.4.x).

    Прежде чем устанавливать zephir, необходимо установить расширение (https://github.com/phalcon/php-zephir-parser), а затем использовать composer для установки zephir: composer global require phalcon/zephir.

Ограничения: — Не поддерживает многомодульную структуру Phalcon, имеет собственную модульную систему; — Все модули имеют одинаковую структуру каталогов; — Модули имеют рабочие режимы, такие как Web, Srv, Cli и т. д., с разными ролями в зависимости от режима; — Независимо от режима, файлы входа одинаковы; — Встроенные RPC сервер и клиент; — Все модули зависят от глобального common (фактически это модуль Phalcon+Cli).

MaaS & MaaL: — MaaS (Module as a Service): Phalcon+ модули как сервисы, Srv предоставляет RPC-сервисы, Web может предоставлять Restful-сервисы; — MaaL (Module as a Library): Phalcon+ модули как библиотеки, могут быть импортированы в другие модули проекта через App::import("test").

Установка:

➜ git clone https://github.com/bullsoft/phalconplus.git
➜ cd phalconplus/ext/
➜ /usr/bin/phpize
➜ ./configure --with-php-config=/usr/bin/php-configure
➜ make
⪼ make install

Создание приложения:

# Загрузка скелета
➜ composer create-project bullsoft/fp-project fp-app
# Создание модуля, предположительно с именем test
➜ cd fp-app
➜ ./common/bin/fp-devtool module:create

Теперь мы поможем вам создать модуль Phalcon+:
Step 1 Введите название модуля, например, «api»
[Enter]: test
Step 2 ...
...
...

Структура одного веб-модуля выглядит следующим образом:

test
.
├── app
│   ├── Module.php
│   ├── auth
│   │   ├── AclResources.php
│   │   ├── Model.php
│   │   ├── Resources
│   │   │   ├── Actions.php
│   │   │   └── Models.php
│   │   └── User.php
│   ├── config
│   │   └── dev.php
│   ├── controllers
│   │   ├── BaseController.php
│   │   ├── ErrorController.php
│   │   ├── IndexController.php
│   │   ├── UserController.php
│   │   └── apis
│   │       └── DemoController.php
│   ├── events
│   │   ├── Acl.php
│   │   ├── AppConsole.php
│   │   ├── AppHandler.php
│   │   ├── BackendServer.php
│   │   ├── Db.php
│   │   ├── EventProvider.php
│   │   ├── Model.php
│   │   ├── MvcDispatch.php
│   │   ├── Router.php
│   │   ├── SuperApp.php
│   │   └── View.php
│   ├── exceptions
│   │   ├── EnumExceptionCode.php
│   │   ├── Handler.php
│   │   ├── UnknownException.php
│   │   ├── UserAlreadyExistsException.php
│   │   └── UserNotExistsException.php
│   ├── plugins
│   │   └── Volt.php
│   ├── providers
│   │   ├── CookieServiceProvider.php
│   │   ├── CryptServiceProvider.php
│   │   ├── DatabaseServiceProvider.php
│   │   ├── DispatcherServiceProvider.php
│   │   ├── LoggerServiceProvider.php
│   │   ├── RedisServiceProvider.php
│   │   ├── RouterServiceProvider.php
│   │   ├── RpcServiceProvider.php
│   │   ├── ServiceProvider.php
│   │   ├── SessionServiceProvider.php
│   │   ├── UrlServiceProvider.php
│   │   └── ViewServiceProvider.php
│   ├── routes
│   │   ├── Api.php
│   │   └── Bare.php
│   └── views
│       ├── error
│       │   ├── show403.volt
│       │   ├── show404.volt
│       │   └── show500.volt
│       ├── index
│       │   └── index.volt
│       └── index.volt
├── cli
│   ├── init.php
│   └── tasks
│       └── HelloTask.php
├── public
│   ├── index.php
│   └── rpc.php
├── src
│   ├── models
│   │   └── UserModel.php
│   ├── protos
│   │   ├── Enums
│   │   │   └── UserStatus.php
│   │   └── Schemas
│   │       └── RegInfo.php
│   └── services
│       ├── BaseService.php
│       └── DemoService.php
└── var
    └── cache

Запуск:

С использованием Phalcon+DevTool

➜ ./common/bin/fp-devtool server:start test

Запускаем сервер...
{
    "command": "{ (php -S 0.0.0.0:8181 -t public/ .htrouter.php) <&3 3<&- 3>/dev/null & } 3<&0;pid=$!; echo $pid > /path/to/test/var/run/server.pid",
    "pid": 8249,
    "running": true,
    "signaled": false,
    "stopped": false,
    "exitcode": -1,
    "termsig": 0,
    "stopsig": 0
}
... Запуск выполнен успешно, используйте http://127.0.0.1:8181 для доступа

С использованием PPM

➜ cd test
➜ ../vendor/bin/ppm start Конечно, я могу помочь вам с переводом этого текста. Вот перевод на русский язык:

Конечно, можно также создать конфигурационный файл, чтобы каждый раз при запуске было удобнее.

➜ cd test ➜ touch ppm.json ➜ ../vendor/bin/ppm start -c ppm.json


Содержание ppm.json:
```json
{
    "bridge": "PhalconPlus\\Bridge",
    "host": "127.0.0.1",
    "port": 8181,
    "workers": 2,
    "app-env": "dev",
    "debug": 1,
    "logging": 1,
    "static-directory": "public/",
    "bootstrap": "PhalconPlus\\Bootstrap",
    "max-requests": 1000,
    "concurrent-requests": 20,
    "php-cgi": "/usr/local/opt/php@7.2/bin/php"
}

Использование RoadRunner (https://github.com/spiral/roadrunner)

➜ composer require spiral/roadrunner
➜ cd test
➜ touch .rr.json
➜ touch psr-worker.php

.rr.json содержание:

{
  "http": {
    "address": "0.0.0.0:8181",
    "workers": {
      "command": "/usr/local/opt/php@7.2/bin/php psr-worker.php",
      "relay": "unix://rr.sock",
      "pool": {
        "numWorkers": 2
      }
    }
  },
  "static" : {
    "enable" : true,
    "dir": "public",
    "forbid": [".php", ".htaccess"]
  }
}

psr-worker.php содержание:

<?php

use Spiral\Goridge;
use Spiral\RoadRunner;
use PhalconPlus\Http\PsrResponseFactory;

ini_set('display_errors', 'stderr');

$app = (new PhalconPlus\Bootstrap(__DIR__))->app();

$worker = new RoadRunner\Worker(
    new Goridge\SocketRelay(__DIR__."/rr.sock", null, Goridge\SocketRelay::SOCK_UNIX)
);

$psr7 = new RoadRunner\PSR7Client($worker);

while ($req = $psr7->acceptRequest()) {

    try {
        $resp = $app->handle($req);
    } catch (\Throwable $e) {
        Test\Exceptions\Handler::catch($e);
        $resp = $app->response();
    }

    $psr7->respond(PsrResponseFactory::create($resp));
    $app->terminate();
    unset($req, $resp);
}

Затем в модульном каталоге выполните:

➜ rr serve -d -v

Используя Nginx

Конфигурационный файл:

server {
      listen 8181;
      server_name localhost;
      access_log  /var/log/nginx/test.access.log;

      index index.php index.html index.htm;

      set $root_path '/home/work/wwwroot/fp-app/test/public';

      root $root_path;

      try_files $uri $uri/ @rewrite;

      location @rewrite {
          rewrite ^/(.*)$ /index.php last;
      }

      location ~ \.php {
          fastcgi_pass unix:/run/php/php7.2-fpm.sock;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }

      location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
          root $root_path;
      }

      location ~ /\.ht {
          deny all;
      }

}

Обратная связь и поддержка

Мы приветствуем любые отзывы и надеемся на вашу поддержку.

Желаем всего наилучшего и успехов!

Комментарии ( 0 )

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

Введение

phalconplus — фреймворк, основанный на phalcon. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bullsoft-phalconplus.git
git@api.gitlife.ru:oschina-mirror/bullsoft-phalconplus.git
oschina-mirror
bullsoft-phalconplus
bullsoft-phalconplus
master