PHP是快速搭建网站的利器,在中小网站有着广泛的应用。Slim是一个PHP微型框架,可以帮你快速创建强劲的Web应用和API。经常有人讨论说那种PHP框架更好,其实这个问题就像语言本身的争论一样,是没有什么标准答案的。就看合适不合适。看到有人说过这么一句话,说PHP的框架也可以按层次或者使用阶段来,比如
最精简系: 类似 Slim Framework / 功能齐全:类似 CI YII Cake / 更高级一点的:比如 Laravel 。
今天想简单介绍一下 Slim ,官网自己号称是一个 微型框架 ,就好比 Python 里的 Flask 。 官网原话:Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs.
代码片段:
get('/hello/{name}', function (Request $request, Response $response) {
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
return $response;
});
$app->run();
1)在系统上安装PHP、MySQL和应用服务器如 apache httpd
2)安装PHP应用包管理器 Composer(类似于自动构建工具,如 JAVA -- Maven Gradle, Python -- PIP Ruby -- GEM 等)
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
#或者比如MAC 下用 brew
$ brew tap josegonzalez/homebrew-php
$ brew install josegonzalez/php/composer
如 /Users/aabb/source/php (或者 D:\phpwebroot) 下创建目录 如 slim 及下级目录 slim\src\public
4)在 slim\src 下执行如下命令,下载依赖包
composer require slim/slim "^3.0"
下载完成后,会看到如下文件
composer.json composer.lock public vendor
get('/', function ($request, $response, $args) {
$response->write("Hello, Welcome to Slim Framework!!!");
return $response;
});
$app->run();
~
6)如果你使用的是apache httpd 应用服务器,请在slim目录下创建 .htaccess, 写入
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
$ php -S localhost:7777 #后面的端口号可以任意设置,只要不冲突
(你也可以将其移动到应用服务器对应的目录,然后配置一个server,具体参见 这里 )
这里我们以一个简单的员工信息做为示例,在MySQL中某个数据库下创建表 employee ,如
CREATE TABLE IF NOT EXISTS `employee` (
`employee_id` int(11) NOT NULL,
`emp_name` varchar(100) NOT NULL,
`emp_contact` varchar(100) NOT NULL,
`emp_role` varchar(100) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
INSERT INTO `employee` (`employee_id`, `emp_name`, `emp_contact`, `emp_role`) VALUES
(1, 'Hardik Vyas', '94085xxxxx', 'Web Developer'),
(3, 'Raj K Joshi', '996633XXX', 'SEO Master'),
(4, 'Ram D Rv', '55555XXX', 'Admin');
get('/', 'get_employee');
$app->get('/employee/{id}', function($request, $response, $args) {
get_employee_id($args['id']);
});
$app->post('/employee_add', function($request, $response, $args) {
add_employee($request->getParsedBody());//Request object’s getParsedBody()
method to parse the HTTP request
});
$app->put('/update_employee', function($request, $response, $args) {
update_employee($request->getParsedBody());
});
$app->delete('/delete_employee', function($request, $response, $args) {
delete_employee($request->getParsedBody());
});
$app->run();
function get_employee() {
$db = connect_db();
$sql = "SELECT * FROM employee ORDER BY `emp_name`";
$exe = $db->query($sql);
$data = $exe->fetch_all(MYSQLI_ASSOC);
$db = null;
echo json_encode($data);
}
function get_employee_id($employee_id) {
$db = connect_db();
$sql = "SELECT * FROM employee WHERE `employee_id` = '$employee_id'";
$exe = $db->query($sql);
$data = $exe->fetch_all(MYSQLI_ASSOC);
$db = null;
echo json_encode($data);
}
function add_employee($data) {
$db = connect_db();
$sql = "insert into employee (emp_name,emp_contact,emp_role)"
. " VALUES('$data[emp_name]','$data[emp_contact]','$data[emp_role]')";
$exe = $db->query($sql);
$last_id = $db->insert_id;
$db = null;
if (!empty($last_id))
echo $last_id;
else
echo false;
}
function update_employee($data) {
$db = connect_db();
$sql = "update employee SET emp_name = '$data[emp_name]',emp_contact = '$data[emp_contact]',emp_role='$data[emp_role]'"
. " WHERE employee_id = '$data[employee_id]'";
$exe = $db->query($sql);
$last_id = $db->affected_rows;
$db = null;
if (!empty($last_id))
echo $last_id;
else
echo false;
}
function delete_employee($employee) {
$db = connect_db();
$sql = "DELETE FROM employee WHERE employee_id = '$employee[employee_id]'";
$exe = $db->query($sql);
$db = null;
if (!empty($last_id))
echo $last_id;
else
echo false;
}
?>
1)每个HTTP请求都有一个请求体,它可能是JSON、XML或者其他POST数据数组。这个函数用来机械这些请求参数。
2)看看这段代码,是不是相当简洁,可读性很好
3)use这一句,表示将请求和响应类导入我们的程序。这样我们不用写上长长的名字来引用它
4)接下来我们包含了 vendor/autoload.php -- 这个有Composer自动创建的目录和文件,引入后我们可以自动使用相关依赖文件。
5)最后我们创建 $app 对象, $app->get() 调用我们的第一个 路由
6)不要忘记在最后调用 $app->run(), 告诉Slim我们已经完成配置,它可以启动和监听了
4. 启动和测试
1) 通过在 src\public 目录下 调用 $ php -S localhost:7777 来启动
2)调用 ,在浏览器栏中输入,测试GET所有员工信息
http://localhost:7777/dboper.php
3)通过其他接口测试工具来测试这些接口,比如postman soapUI 或者火狐浏览器的 RestClient 或 Chrome 的 Advanced Rest Client 插件。