kyu/frmwrk

一个简单的框架

dev-master 2014-10-03 23:08 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:51:09 UTC


README

Frmwrk是一个简单且年轻的框架。目前它仅由视图-控制器系统组成(模型部分将尽快加入),但您可以使用自己的数据库管理器。

用法

只需包含由composer生成的autoload.php文件,初始化配置并实例化即可!

<?php

require __DIR__ . '/../vendor/autoload.php';
$config =
[
'controllers' => __DIR__ . '/../app/Controllers/',
'views'       => __DIR__ . '/views/',
'web'         => __DIR__
];
\Frmwrk\Engine::init($config);
$instance = \Frmwrk\Engine::getInstance();
$instance->render();

配置

配置数组包含多个参数

  • controllers:必须包含控制器文件夹的路径
  • views:必须包含视图文件夹的路径
  • default_controller:(默认:'index')这是默认控制器的名称
  • notfound:(默认:'notfound')当请求的控制不存在时,将加载此控制器的名称
  • pretty_url:(默认:true)如果启用,您将通过更清晰的方式通过URL传递变量。(参见下一部分以获取更多详细信息)
  • web:这是web文件夹的路径

漂亮URL

漂亮URL功能仅用于简化URL。以下是一些示例

http://domain.tld/CONTROLLER_NAME
http://domain.tld/CONTROLLER_NAME/VAR_NAME_1/VAR_VALUE_1
http://domain.tld/CONTROLLER_NAME/VAR_NAME_1/VAR_VALUE_1/VAR_NAME_2/VAR_VALUE_2/
ect...

第一个参数,称为CONTROLLER_NAME,是要加载的控制器名称。

接下来的参数总是成对出现。第一个将是变量的名称,第二个将是值。

http://domain.tld/index/lang/fr/
will load the controller 'index' and send him the variable lang which contains 'fr'.

这些变量在当前控制器的init()函数中发送。

<?php
class index extends \Frmwrk\Controller
{
    public function init($variables)
    {
        print_r($variables['_GET']);  // Will display $_GET variables
        print_r($variables['_POST']); // Will display $_POST variables
        print_r($variables['_URL']);  // Will display Pretty URL variables

        // ...
    }
}

模板

您现在可以在您的视图中使用PHP作为标签!目前这是模板解析器的原型版本,但它可以工作。foreach、if/elseif/else和echo可用,以下是它们的使用方法

<!-- A simple foreach -->
<foreach var="array" as="value">
    Value: {{_value_}}
</foreach>

<!-- A key/value foreach -->
<foreach var="array" key="k" as="value">
    Key: {{_k_}}<br/>
    Value: {{_value_}}
</foreach>

<!-- A if -->
<if cond="_myvar_ == 20">
    20
<elseif cond="_myvar_ > 50">
    > 50
<else>
    < 50 & != 20
</if>

<!-- Display a var-->
{{_myvar_}}

/!\ 这仍然是一个原型,将会改变!

接下来是什么?

这是一个很好的问题,我真的不知道。每当我觉得它缺少某些东西时,我都会更新这个框架。最重要的功能是数据库管理,但还有一个带缓存管理的真实模板系统要做。

问题?

如果您有任何问题或认为readme.md中缺少信息,请通知我。