groucho75 / phmisk
Php Html5 微型启动套件
Requires
- php: >=5.3.3
- bramus/router: dev-master
- erusev/parsedown: dev-master
- unlight/sparrow: dev-master
This package is auto-updated.
Last update: 2024-09-26 20:26:18 UTC
README
Phmisk (/piː eɪtʃ miːsk/ 或 /f miːsk/ 或 /wɑtˈevər/ 或 /wɒt ðə fʌk/) 是一个 Php/Html5 微型启动套件。Phmisk 准备与以下内容协同工作:
- html5 UI:Html5boilerplate 和 Twitter Bootstrap,来自 Initializr
- 一个路由器:bramus/router (1)
- 一个数据库层:Sparrow (1)
- 一个简单的会话管理器
- 一个简单的模板引擎
- MVC 模式
(1) Phmisk 默认不包含这些库,您需要使用 Composer 安装它们。当然,使用 Composer,您还可以包括和使用其他库。
您可以通过查看 维基 来找到一些教程和指南。
入门
先决条件
您需要在您的计算机上安装 Composer。
安装方法 #1 (Github)
-
下载并解压此存储库
-
进入
phmisk-master
文件夹并启动 Composer install 以解决和下载所需包$ composer install
安装方法 #2 (Packagist)
-
打开终端并转到您的 web 服务器
-
运行以下命令
$ composer create-project groucho75/phmisk my_project -s dev
-
您将在您的 web 服务器中找到新的可使用
my_project
文件夹:它包含所有文件,包括 Composer 下载的依赖项
开始编辑
- 编辑
app/config.php
(数据库连接设置,php 配置...) - 在主
app/routes.php
中添加您的路由
$ph4
您可以通过编辑 app/routes.php
来编写应用程序。
您可以使用一个名为 $ph4
的 Phmisk 对象,该对象包含主要库的实例。在此页面上,您可以阅读有关如何使用这些库的说明。
您是对的,$ph4 代表 'ph' 加 4 个字符 ('misk')。
路由
路由
在主 app/routes.php
中添加最简单的路由
$ph4->router->get('/hello', function() { echo 'Hello world!'; });
然后您可以通过访问 your-site.com/hello
来查看它。
自定义控制器
您可以将自定义控制器/方法映射为路由:将您的控制器放在 app/controllers
中,它们将自动加载。然后,您必须在 app/routes.php
中添加路由语句:这里是由自定义控制器提供的路由,名为 Demo
$demo = new App\Controllers\Demo(); $ph4->router->get('/test', function() use ( $demo ) { $demo->test(); });
Demo
控制器文件位于 app\controllers\Demo.php
中,包含类似以下内容:
namespace App\Controllers; class Demo extends Base { function test() { echo 'This page has been created by Test method of Demo custom controller'; } }
Base
控制器是一个您可以扩展以具有共享方法的父类。
注意:如果您添加了新的控制器文件,您需要运行一个命令来更新 Composer 自动加载映射
$ composer dump-autoload
参考
有关使用方法和更多示例(动态路由模式、挂载路由...),请参阅 路由器主页:bramus/router。
模板(视图)
Phmisk 具有简单的模板引擎来显示视图文件。要在路由中使用模板引擎,您必须在函数中添加 use ($ph4)
,然后您可以使用它作为 $ph4->view
。
app/routes.php
中的一个路由可以是:
$ph4->router->get('/hello/(\w+)', function($name) use ( $ph4 ) { $ph4->view->assign( 'name', $name ); $ph4->view->render( 'hello' ); });
模板文件,ui/hello.php
,可以是:
<?php include __DIR__.'/header.php' ?> <div class="container"> <div class="page-header"> <h1>Hi <?=$name?></h1> </div> <p class="lead">You are welcome!</p> </div> <?php include __DIR__.'/footer.php' ?>
您可以通过访问 your-site.com/hello/johnny
来查看它。
请注意,模板文件是PHP文件,因此您可以自由使用PHP语句。PHP模板文件通常位于公开的ui
文件夹中,与资源(js、css、图片)一起:您可以将模板文件移动到另一个文件夹(例如app/views
),在index.php
中设置可选的VIEWS_PATH
常量。
参考
在路由中,您必须使用2个函数
// Assign a variable $ph4->view->assign( 'name', $name ); // Assign a group of variables $vars = array( 'name' => 'Foo', 'surname' => 'Bar' ); $ph4->view->assign( $vars ); // Assign a variable, and clean XSS $ph4->view->assign( 'name', $name, true ); // Echo the ui/home.php view file $ph4->view->render( 'home' ); // Return the ui/home.php view file as a string $output = $ph4->view->render( 'home', true );
模板引擎使用PHP文件作为视图
在视图文件中,您可以直接像在PHP中一样打印变量
// Quick php echo <strong><?=$name?></strong> // Clean XSS and print <strong><?php safe_echo($name)?></strong>
在视图文件中,您可以使用标准的PHP包含其他视图文件,例如
<?php include __DIR__.'/header.php' ?>
有关更多信息,请浏览视图类。
数据库层
Phmisk使用一个简单的数据库工具包。
首先,在app/config.php
中设置数据库连接设置。
在此blog
路由中,您会获取一些帖子并将它们准备好发送到布局
$ph4->router->get('/blog', function() use ( $ph4 ) { $posts = $ph4->db->from('posts') ->select('title') ->limit(5) ->many(); $data = array( 'pagetitle' => 'My posts', 'posts' => $posts, ); $ph4->view->assign( $data, true ); $ph4->view->render( 'blog' ); });
请注意,您必须在函数中添加use ($ph4)
,然后您可以将其用作$ph4->db
。数据库连接参数设置在app/config.php
中,连接在app/bootstrap.php
中启动。
仅出于对知识的渴望,以下是博客模板文件,ui/blog.php
<?php include __DIR__.'/header.php' ?> <div class="container"> <div class="page-header"> <h1><?=$pagetitle?></h1> </div> <ul class="lead"> <?php if ( is_array($posts) ) { foreach( $posts as $post ) { echo '<li>'. $post['title'] .'</li>'; } } else { echo '<li>No post yet</li>'; } ?> </ul> </div> <?php include __DIR__.'/footer.php' ?>
自定义模型
您可以创建自己的模型类:将您的类放在app/models
中,它们将被自动加载。提供的数据库层Sparrow可以使用自定义类来处理对象。
注意:如果您添加了新的模型文件,您需要运行命令来更新Composer的自动加载映射
$ composer dump-autoload
参考
有关用法和更多示例,请参阅数据库层主页:Sparrow。
会话
Phmisk附带了一个简单的PHP会话管理包装器。它帮助启动和销毁会话,设置和删除会话变量。它帮助使用“flash”变量:仅在下一次轮次中存在的会话数据(例如反馈和用户消息)。
参考
// Init the session $ph4->sess->start(); // Set a session var $ph4->sess->set('my_var', 1); // Set a flash var (it will exist till next round) $ph4->sess->setFlash('my_flash_var', 1); // Get a session var (the 2nd argument is a default if var not found) $ph4->sess->get('my_var', 0);
有关更多信息,请浏览会话类。
文件结构
phmisk root/
|
|__ app/
| |__ classes/
| |__ controllers/
| |__ core/
| |__ models/
| |__ (vendor/)
| |
| |__ bootstrap.php
| |__ config.php
| |__ helpers.php
| |__ routes.php
|
|__ ui/
| |__ css/
| |__ fonts/
| |__ img/
| |__ js/
| |
| |__ (php view files)
|
|__ composer.json
|__ index.php
|__ .htaccess
app/controllers
文件夹包含所有您的自定义控制器和一个Base
控制器。app/core
文件夹包含一些重要的捆绑库(例如核心Phmisk类)。app/classes
文件夹包含可选的类:当然,您可以将您自己的类添加到此处,无论是您自己制作的还是无法在远程存储库中找到的,并且它们将被自动加载。app/models
文件夹包含所有您的自定义模型类。将app文件夹移至网站脚本的上方或外部可能是一个好主意。
ui
包含所有Html5boilerplate和Twitter Bootstrap文件夹和文件,使用Initializr生成并编辑以在Phmisk中工作。然后,还有一些PHP视图文件:页眉、主页、页脚...
Phmisk不附带库(路由器、模板、ORM)。您必须使用Composer来安装它们。之后,将出现一个新的app/vendor
文件夹。
app
文件夹包含一些重要文件
config.php
:在此处您可以设置数据库参数和其他设置;bootstrap.php
:在此处初始化主要的Phmisk类;helpers.php
:此文件包含一些您可以在任何地方使用的有用函数。routes.php
:在此处您可以设置应用程序路由。
高级设置
设置常量
在index.php
中您可以编辑一些重要的常量
ENV
(默认:'dev'
):应用程序环境:dev(开发)、test、live(生产)。您可以使用它根据环境调整应用程序行为:例如数据库设置、显示/隐藏错误。APP_PATH
(默认:'app'
):'app' 文件夹的路径,不带斜杠。此文件夹包含所有库和类。出于安全考虑,您应该将其移动到公共网络根目录之外(见下一段)。UI_PATH
(默认:'ui'
):'ui' 文件夹的路径,不带斜杠。此文件夹包含所有 html/css/js 资产和 php 视图。它必须是公开的和可访问的。VIEWS_PATH
(默认:与UI_PATH
相同):php 模板文件(视图)文件夹的路径,不带斜杠。此文件夹包含所有 php 视图。在标准设置中,您不需要定义它,因为稍后在引导程序中定义了它,并且与UI_PATH
一致;否则,您可以在index.php
中定义它:例如,将其移动到公共网络根目录之外,如APP_PATH.'/views'
。
保护应用文件夹
出于安全考虑,将应用文件夹(app
)移动到网络根目录之外/之上可能是个好主意。
在此示例设置中,应用文件夹已被移动到网络根目录之上的一级
- 您必须在
index.php
中设置它
define('APP_PATH', '../app');
- 您必须在
composer.json
中的配置和自动加载部分中设置它
"config": {
"vendor-dir": "../app/vendor"
},
...
"autoload": {
"classmap": ["../app/core/", "../app/controllers/", "../app/classes/", "../app/models/"],
"files": ["../app/helpers.php"]
}
- 然后,别忘了启动 composer install
$ composer install
包含更多包
PHP 包
要包含来自 Packagist(主要 Composer 存储库)的更多 PHP 包,您可以在 composer.json
中的 require
部分中简单添加它们,然后启动 Composer 更新
"require": {
...
"monolog/monolog": "1.0.*"
},
然后,在主 app/routes.php
中,您可以通过写入来开始使用它
$log = new Monolog\Logger('name');
如果您想使用其他包代替标准包(例如另一个模板引擎),您必须在 composer.json
中的 require
部分中设置它们,然后更改 app/bootstrap.php
中的初始化。
您可以通过 Composer 安装库,不仅来自 Packagist,还可以来自例如 Github:这里是一个 示例。
JavaScript 库
如果您需要 JavaScript 库,当然您可以通过 Composer 获取它们,或者您可以将它们下载并放入 ui
文件夹中,或者直接从模板文件中链接它们的 CDN。
教程 & 示例
请参阅 Wiki,以找到有关添加新包的一些教程。
部署到生产环境
当您准备好将 phmisk 网站部署到生产服务器时,请按照以下步骤操作
- 当然,在生产服务器上复制所有文件;
- 在
index.php
中将ENV
设置为live
; - 在生产服务器上运行以下命令(--optimize-autoloader 标志 = 更快的 Composer 自动加载;--no-dev 标志 = 开发包将不会安装)
$ composer install --no-dev --optimize-autoloader
注意:请确保还上传了 composer.lock
文件,并且只在生产服务器上运行 Composer install:这样,开发包将被忽略,并且您可以确保生产服务器上安装的包版本与您开发的版本一致。因此,永远 不要在生产服务器上运行 Composer update。
如果您无法通过 shell 访问生产服务器,您可以在本地服务器上运行命令(步骤 3),然后上传所有文件到生产服务器。
欢迎捐款
如果您喜欢我的辛勤工作,当然您可以通过 向我捐款。
并且不要忘记向 Phmisk 使用其他库的作者捐款(见上方的存储库和链接)。