Рубрики
Uncategorized

Яф-пример

Автор оригинала: David Wong.

Yaf-это PHP-фреймворк, написанный на языке Си Братом Бердом. Адрес документа Yaf: http://yaf .laruence.com/manual/

На самом деле, я связался с Yaf давным-давно, но я только что узнал, не понял и не использовал его подробно. Однако в связи с недавней реконструкцией проекта, а основой, используемой при реконструкции, является структура Yaf, я воспользовался этой возможностью, чтобы эффективно использовать структуру Yaf. На самом деле, в этой статье в основном приводится пример yaf, который заключается в расширении нижнего yaf, потому что вещи YAF просты, так быстро. Брат Берд также привел два примера, laruence/yaf-примеры, пример использования Smart в yaf и пример пакета с операциями с базой данных и журналами в yaf. Мой примерный адрес Yaf: https://github.com/jsyzchen/chen-yaf.

Во-первых, вам необходимо установить yaf, который задокументирован по адресу http://php .net/manual/zh/yaf.installation.php.

extension=yaf.so
Yaf.use_namespace = 1; Open namespace
Yaf.use_spl_autoload=1; turn on autoload

Во-первых, вам необходимо установить yaf, который задокументирован по адресу http://php .net/manual/zh/yaf.installation.php.

  • Красноречивый ОРМ

  • Прут

  • Прут

  • Прут

Сначала отредактируйте файл conf/application.ini

[common]
application.directory = APP_PATH  "/application"
application.view.ext = "html"
application.view.engine = "twig"

;user
user.default_filter = 'trim,addslashes,htmlspecialchars'

[product : common]
;twig
twig.cache = APP_PATH "/storage/twig/cache"

;database
database.driver = 'mysql'
database.read.host = '127.0.0.1'
database.write.host = '127.0.0.1'
database.port = '3306'
database.database = 'test'
database.username = 'root'
database.password = '123456'
database.charset = 'utf8'
database.collation = 'utf8_unicode_ci'
database.prefix = ''
database.strict = false

[develop : common]
application.dispatcher.catchException = TRUE

;twig
twig.debug = true

;socketlog
socketlog.enable = true
socketlog.host = 'localhost'
socketlog.optimize = true
socketlog.show_included_files = true
socketlog.error_handler = true
socketlog.force_client_ids = ''
socketlog.allow_client_ids = 'slog_78de03'

;database
database.driver = 'mysql'
database.host = '127.0.0.1'
database.port = '3306'
database.database = 'test'
database.username = 'root'
database.password = '123456'
database.charset = 'utf8'
database.collation = 'utf8_unicode_ci'
database.prefix = ''
database.strict = false

База данных-это конфигурация базы данных MySQL, socketlog-это конфигурация журнала сокетов, а twig-это конфигурация механизма шаблонов twig.

Поскольку chen-yaf использует пакет composer, сначала вам необходимо установить composer, и

{
    "require": {
        "php": ">=5.5.9",
        "illuminate/database": "5.1.*",
        "illuminate/events": "5.1.*",
        "symfony/debug": "2.6.*",
        "symfony/var-dumper": "2.6.*",
        "twig/twig": "^1.26"
    },
  
    "autoload": {
      "psr-4": {
        "App\Models\": "application/models"
      }
    }
}

Тогда запомни

composer install  

Тогда запомни

/**
 * Loading files under vendor
 */
public function _initLoader()
{
    \Yaf\Loader::import(APP_PATH . '/vendor/autoload.php');
}

/**
 * configuration
 */
public function _initConfig()
{
    $this - > config =  Yaf Application:: app () - > getConfig (); // Save the configuration
    \Yaf\Registry::set('config', $this->config);
}

Тогда запомни

В yaf нет класса операций с базой данных. Вы можете написать слой DAO самостоятельно или напрямую использовать сторонние пакеты. Рекомендуется использовать Medoo и красноречивый ORM. Красноречивый ОРМ используется в чен-яфе. Отредактируйте начальную загрузку. PHP-файл и добавьте _в нем метод DBAdapter по умолчанию

/**
 * Initialize the database distributor
 * @function _initDefaultDbAdapter
 * @author   [email protected]
 */
public function _initDefaultDbAdapter()
{
    // Initialize illuminate/database
    $capsule = new \Illuminate\Database\Capsule\Manager;
    $capsule->addConnection($this->config->database->toArray());
    $capsule->setEventDispatcher(new \Illuminate\Events\Dispatcher(new \Illuminate\Container\Container));
    $capsule->setAsGlobal();
    // Open Eloquent ORM
    $capsule->bootEloquent();

    class_alias('\Illuminate\Database\Capsule\Manager', 'DB');
}

Затем базовый класс модели, EloquentModel.php, построен в соответствии с приложением/моделью.

Затем все классы моделей наследуют модель Eloquent, чтобы они могли управлять базой данных в Laravel, и БД также можно использовать, как фасад БД в Laravel. Документы: https://laravel-China.org/docs/5.1/красноречивый , https://laravel-China.org/docs/5.1/database

Twig-это механизм шаблонов в рамках Symfony, но его также можно использовать отдельно. Движок шаблонов также может использовать Smarty, если вы хотите иметь функцию кэширования страниц, пожалуйста, используйте Smarty.

Отредактируйте начальную загрузку. PHP-файл и добавьте метод _knitting

/**
 * Twig View
 * @param \Yaf\Dispatcher $dispatcher
 */
public function _initTwig(\Yaf\Dispatcher $dispatcher)
{
    $twig = new \Twig\Adapter(APP_PATH . "/application/views/", $this->config->get("twig")->toArray());
    $dispatcher->setView($twig);
}

Это позволяет использовать механизм шаблонов twig в HTML-файлах

Журнал сокетов – это инструмент отладки, разработанный Ло Феем, основным разработчиком платформы ThinkPHP. Вы должны быть знакомы с фреймворком ThinkPHP 5. Для получения дополнительной информации вы можете прочитать другую мою статью: Служба ведения журнала.

Я поместил файлы, связанные с SocketLog, в каталог library/Common/Logger. Когда вы установили журнал сокетов и настроили его, добавьте метод _initLogger в Bootstrap.php.

/**
 * log
 * @param \Yaf\Dispatcher $dispatcher
 */
public function _initLogger(\Yaf\Dispatcher $dispatcher)
{
    //SocketLog
    if (Yaf\ENVIRON === 'develop') {
        if ($this->config->socketlog->enable) {
            // loading
            \Yaf\Loader::import('Common/Logger/slog.function.php');
            // Configure SocketLog
            slog($this->config->socketlog->toArray(),'config');
        }
    }
}

Затем вы можете отлаживать свой код в Chrome.

Чен-яф вводит некоторые функции, которые обычно используются в library/Common/functions.php, если у вас есть другие функции в вашем проекте. Отредактируйте Начальную загрузку. PHP и добавьте метод функции _init.

/**
 * Common function loading
 */
public function _initFunction()
{
    \Yaf\Loader::import('Common/functions.php');
}

Чен-яф-это всего лишь очень простой пример яф, с добавлением красноречивых ОРМ и прутика. В реальном проекте нам нужно постоянно что-то добавлять в него. Теперь, когда мы используем пакет composer, мы можем легко использовать сторонние пакеты при выполнении наших собственных проектов, чтобы избежать повторения колес. Порекомендуйте некоторые сторонние пакеты, которые мы используем в проектах рефакторинга. Углерод: Действие времени и даты. 2. php-resque: Работа в очереди. 3. Работа sokil/php-mongo:mongodb. 4. монолог: Ведение журнала.

Для лучшего общения добавьте группу QQ: 415183844

Кодовые слова нелегко воспроизвести, пожалуйста, укажите исходный адрес, блог Jsyz Chen: http://jsyzchen.com/2016/10/22/yaf-example/thank ты!