超轻量级 PHP 框架发布 - JunePHP

2014-07-05 18:10:01 +08:00
 zencoding
这个框架因为写在6月份,就命名为了JunePHP。

或许这个称不上一个框架,但是既然这样说了,就算它是吧

目前体积控制在35K,以后慢慢会臃肿起来的

项目地址: https://github.com/willper/JunePHP
8043 次点击
所在节点    分享创造
30 条回复
eseeker
2014-07-05 18:24:48 +08:00
记得见到过一个类似的框架,也是以CI为基础写得,忘记名字了
dongbeta
2014-07-05 18:35:52 +08:00
这一行注定这个框架没法用:

header("Content-type:text/html;charset=utf-8");
dongbeta
2014-07-05 18:37:18 +08:00
我仔细说一下吧:

1. header("Content-type:text/html;charset=utf-8"); 限定了返回得 content type,影响用户做 API Server。
ddzz
2014-07-05 18:44:52 +08:00
PHP框架,最需要的是一个强大的ORM,像django那样。对于MVC中的V和C,做不做都无所谓,PHP本身就是模板语言,不需要再开一套模板语法。对于controller,一个文件对应一个action就可以了,比如article_add.php
article_edit.php
article_delete.php
dongbeta
2014-07-05 18:45:18 +08:00
不好意思,手滑提交了。

同理还有 exit("<meta http-equiv='Refresh' content='" . $time . ";URL=" .$url. "'>");

2. 目录下面放 htaccess 是以前虚拟主机留下的习惯,现在已经不需要了。
3. 这句同2理:if (!defined('ACCESS')) die('No direct script access allowed');
4. model 层不建议一开始就自己做,是个大坑。可以先引入 laravel 的 database 部分。先从其他地方开始玩起。这样比较容易且能深入了解其他部分。
5. 建议使用 space 而不是 tab 缩进。
6. Application::__construct() 好多层

我建议参考一下 Yii 和 Laravel 的实现。这是两个很好的范本,而且是两种不同的设计理念。如果继续感兴趣,建议看看 Ruby on Rails。因为 PHP 的框架对 RoR 的模仿根本达不到可以相提并论的层次。

最后,PHP 程序员自己写框架,是一种很好的学习方法。建议楼主继续深入下去。
yakczh
2014-07-05 19:18:48 +08:00
5.3以后php不需要框架了, 高仿ror的框架都是不怎么懂php的,这些框架只会把php在邪路上越扯越远,最后丧失php本身的优势
eseeker
2014-07-05 19:21:30 +08:00
@ddzz 呵呵,我一直就是这么干的,所以用PHP开发从不用模板
eseeker
2014-07-05 19:24:19 +08:00
@eseeker 打错了,是不用框架
a591826944
2014-07-05 19:24:46 +08:00
我去 每个文件都要这一句?if (!defined('ACCESS')) die('No direct script access allowed');

我上大二的时候 确实这么写过。。。
dongbeta
2014-07-05 19:24:51 +08:00
地图炮:没有用框架的php项目都是小项目。
zhangsan
2014-07-05 19:37:58 +08:00
不懂php 不是很明白这个函数

function redirect($url, $time = 0) {
if (!headers_sent()) {
if ($time === 0) header("Location: ".$url);
header("refresh:" . $time . ";url=" .$url. "");
exit();
} else {
exit("<meta http-equiv='Refresh' content='" . $time . ";URL=" .$url. "'>");
}
}

headers_sent

http请求的response不是一次性发送完成的吗?还可以分布构造吗?
raincious
2014-07-05 19:38:05 +08:00
@ddzz 反对嗯……

不是关于是否提供一个强大的ORM的。

框架只是定义一个项目的管理方式。因此我做框架的时候不强制使用某个ORM或者其他组件,甚至于框架核心的附属结构都被设计成能替换的。唯一不能替换的只有框架核心(一个AutoLoader,但还是可以Overwrite不是么),来强制定义框架组件的加载方式。

操作项目的时候可以根据团队需要来自己决定使用什么样的组件。

框架用户应该可以决定喜欢什么类型的库。毕竟除了那几个高大上的大框架,其他框架本身就没有什么优势,强制绑架到某某东西上感觉更加不好。对吧?


@a591826944

你要看过Discuz的代码更得触目惊心了。这都是以前面向过程编程时留下的“余孽”。当然也有好的一面,所以这样的代码我还在用,比如放在临时文件和编译好的模板里。


@yakczh

嘿嘿嘿,AutoLoad框架(Composer),ORM框架,各种组件框架……细分了。
xbonline
2014-07-05 19:41:13 +08:00
人生苦短,别造轮子
raincious
2014-07-05 19:44:04 +08:00
@zhangsan

检查了headers_sent,如果响应头还没发送才会构建header,否则就输出一段HTML。

如果OB用的对,那么这段HTML还是会被浏览器看到的。但是,这样重定向,好么?

建议楼主再深入学习下,在学习之前写实现很多时候就是埋坑。
TangMonk
2014-07-05 20:11:16 +08:00
@yakczh 能详细说明下吗,我不是很懂 PHP
muziyue
2014-07-05 20:59:46 +08:00
这种所谓的轻量级框架有什么意义呢...轻量级的东西我认为有一个封装好的数据库类就足以
Seita
2014-07-05 22:31:59 +08:00
真是高仿 CI 。。。
zyx89513
2014-07-05 22:34:56 +08:00
支持楼主, 轻量级的PHP框架还有个slim, 效率挺高的, 推荐一下
yakczh
2014-07-05 22:59:35 +08:00
@TangMonk
从技术层面讲
同样是动态脚本,php跟ruby,python运行机制不一样,而是跟lua,js这种嵌入脚本是一类的,就是在宿主环境中嵌入处理器,每次请求都要从头来过,
在这种嵌入机制下搞一个类似ror这种full stack的框架进去,就象写js在onload的时候先加载一个框架进来,不是说不可以,而是没有必要,只会增加很多无谓的开销,而且这个开销会随着业务量的线性增长而不断放大,等到有一天你想回头优化代码的时候,就会发现骑虎难下,整个系统牵一发而动全身,有需求变更想要扩展都是很难的
2 从软件生态链方面 ror是一枝独大,众望所归,而且是经过多年实践检验的成熟产品 对于企业来说不用关心内部细节,敲个rails s 套模板写业务就行了, 对于开发者跳槽了到新的公司,原来积累的ror经验马上就能派上用场, 但在php这方面框架多如牛毛,采用框架首先面临选择的困惑,而且框架质量参差不齐,并不象ror在twitter经过实际业务的检验,有些框架只是个人兴趣产品,来劲了拼命推广,能忽悠一些不懂技术的土鳖小公司,没兴趣了,出了问题又不闻不问,1.0写了一坨,到2.0又不支持原来的写法了,重新搞一套又开始玩,公司如果选择了框架,原来php招人只需要求有php基础就可以,现在需要加一条,熟悉xx框架,无疑选择面就少了很多,团队开发的情况下, 很难短时间招到熟悉同一框架的程序员
对于php新手来说,面对这么多框架也面临选择的困惑,这些框架虽然总体都差不多,但是具体配置参数,函数调用,模板语法都各不相同,跳槽到新公司以后,如果是不同的框架,又得重新熟悉另一套写法,为什么很多框架拥甭象打鸡血一样捍卫自己熟悉的框架,潜意识里其实是不想让自己为熟悉框架所花的心血打水漂,因为熟悉不同框架的用法并不能提高自己的技术水平,只是为了迎合公司的招聘要求,公司用框架也是想规范代码,屏蔽具体技术细节,降低总体人力成本,所以在这么多框架里面换来换去本身就是一件无意义的事

我的观点是php不需要框架,只需要一个类似ror那样约定大于配置的最佳实践的目录结构 这个目录结构完全可以代替框架的作用,而且不用一行代码
TangMonk
2014-07-06 09:53:59 +08:00
@yakczh 谢谢您的回复,我之前用过国产的 ThinkPHP, 了解过 Laravel,sf, 用过一些 ror,后来改用 Drupal 在学校接外包。到现在我使用的是 Nodejs(express+socket.io)。

经过你这么一说我突然觉得 express 不就是一个封装了 PHP 常用函数的东西吗, 我还舍近求远来搞 nodejs。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121103

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX