axolo/leophp

This package is abandoned and no longer maintained. No replacement package was suggested.

LeoPHP Framework

dev-master 2017-03-10 07:24 UTC

This package is not auto-updated.

Last update: 2020-08-21 20:52:15 UTC


README

警告(WARNING)

  • 请勿泄露config.php,比如push到公开git仓库
  • DO NOT push config.php to public git

更新

  • 配置文件加入appkey,提高安全性
  • 文件上传下载(Attachment)在Controller里实现
  • 文件上传下载(File)应该写到组件里,包括RBAC也应该是与数据库无关的组件
  • 原生与第三方组件的取舍是艺术,也是哲学,第三方也许更强大,原生或许更便捷
  • 细微改动不再同步更新到coding.net,请移步:

说明

  • ver
    • Version: 0.3.0
    • Required: PHP>=5.3 && PDO
    • 初步完成MVC
  • app
    • run: 完成controller、action、view映射
    • config: 整合配置设置与读取
    • router: 剥离当前路径(controller/action)设置与读取
  • controller
    • 基本上完全没写
  • model
    • 合并storage
    • 目前可用扩展自PDO(偷懒)
    • 或者可以medoo?
    • 非常粗略的写了点构造函数
    • 防止SQL攻击(请手动使用Utils::sql())
  • view
    • 注入视图变量名:$res(属于裸奔状态)
    • 完成View::jsonp($res)
    • 防止XSS攻击(请手动使用Utils::xss())
    • 可指定视图渲染(未完成)
  • plugin
    • 完成用户插件按配置加载及自动忽略不存在配置
  • utils
    • Utils::xss($htm)
      • 防止XSS跨站攻击,echo和print时请考虑使用
    • Utils::sql($sql)
      • 防止SQL注入攻击,客户端输入SQL时务必使用

安装

  • Composer
    • Composer中文文档
    • composer.json: "require": { "php": ">=5.3", "axolo/leophp": "@dev" }
    • composer update

目录

app                       // Your App root path
 ├─ vendor                // Composer
 │    └─ axolo            // LeoPHP framework and example
 │         ├─ api         // example: Api by LeoPHP
 │         ├─ web         // example: HTML
 │         ├─ attachment  // example: Attachment
 │         └─ framework   // LeoPHP framework
 ├─ config  
 │    └─ config.php       // App config
 ├─ controllers  
 │    └─ Index.php   
 ├─ models
 │    └─ mysql  
 │        └─ Blog.php  
 ├─ plugins  
 │    └─ cros.php
 └─ views  
      └─ index  
           └─ index.php
  • 配置

    • 参见config/config.php
  • 应用入口:index.php

<?php
namespace leophp;
require '../vendor/autoload.php';
App::run(join(DIRECTORY_SEPARATOR, array(__DIR__, 'config', 'config.php')));
  • 控制器:controllers/Index.php
<?php
namespace leophp;
class Index extends Controller {
  public function index() {
    return array('controller' => 'index', 'action' => 'index');
  }
}
  • 视图:views/index/index.php
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>index/index</title>
</head>
<body>
  <?php var_dump($res); ?>
</body>
</html>

疑问

  • 配置文件为什么不用json或者ini格式?好吧,可以写注释,可以写逻辑,而且避免不小心被访问,省心。君不见webpack.config.js也这么干?
  • 为什么很多都基本上没写?这个……好吧,的确是因为懒。懒是一种态度。我们的口号是:懒,要向Symfony、Laravel看齐!我要轮子!——这借口,没谁了吧。

由来

由于工作需要,重新开始用PHP,折腾好几个框架(班主任:这里就不点名了),臃肿厚重,可谓专治各种不服,终于被感动到哭了。

一个曾经辉煌在前端的服务端脚本语言,本来草根得很,一定各种作,非高大上到无人敢碰才好。

换做华妃娘娘来,必定又是那句经典名言:“贱人就是矫情”。有必要搞得如此混乱不堪么?清爽干净不好么?

非常怀念我亲爱的Node.js、Vue、Express,甚至对冷落许久的jQuery也莫名觉得亲切,相貌可人了。

——网上说饥渴已久的人,看到一头老母猪,都觉得眉清目秀,也许这就是这种感觉罢。

哭了归哭了,还是得用PHP来写,环境是用来迁就的,除非自己牛到不行,可惜我属马,那就自己写一个拉倒吧。

想起几年前混论坛那段时间对PHP的感悟,这么多年来PHP的发展也许更加印证了我的看法。

想想其实并非PHP本身的罪过,人家Facebook不是用得好好的?也许是使唤PHP的某些人暂时迷茫了方向,大炮轰蚂蚁,何其壮观!

方跃明