https://github.com/icbd/junior_framework
PHP 入门, 写了个简易框架. 没大项目经验,想把框架丰富起来但是思路不清,恳请各位指点🙏
1
ybmimo 2016-06-01 10:03:02 +08:00 via Android 1
写框架之前可以先参考下其他的流行框架是如何弄得,
刚看了下,就当前的代码而言,有两个点可能需要调整下,第一个是应该用 composer 来组织代码,第二个是应该把入口文件 index.php 单独提出来放到 public 目录,目录名随意 |
2
5dkgansm 2016-06-01 10:03:37 +08:00
不要为了丰富框架而去丰富,做成插件、扩展的形式怎么样?
|
4
widdy 2016-06-01 10:56:31 +08:00
@fruit 我的理解,这样的话 web 服务器把 index.php 的目录作为根目录,可以避免客户端访问到其它目录的敏感文件等。
|
5
ybmimo 2016-06-01 13:10:37 +08:00 via Android
widdy 正解,能提高安全性
|
6
cxbig 2016-06-01 15:03:02 +08:00
- 参考一下如 Laravel 的加载机制,用 namespace 和 use ,都 php7 了还在 Hello::index 这样具体的 action 里用 require_once Twig_Autoloader 不合适, controller 应该有个基础类,处理 request 、 response ,加载各种基本组件等,其他实际的 controller 继承即可。
- 另外 model 写成和 view 模板对应的类,那么和数据库对接的类放哪?层级关系怎么处理呢? |
7
Chappako 2016-06-01 15:13:38 +08:00
1. https://github.com/PizzaLiu/PHP-FIG 先读一下 FIG 标准吧,关于语法的标准,和自动加载的部分
|
8
Chappako 2016-06-01 15:19:21 +08:00
1. https://github.com/PizzaLiu/PHP-FIG 先读一下 FIG 标准吧,关于语法的标准,和自动加载的部分
2. 入口文件应该放到 public 或者 public_html 下,其他放在外面 3. 第三方资位置,参考 FIG 4. 框架名叫 Junior ,程序核心目录又叫 focus ,你是想逼死谁么? 5. MVC 各层的抽象呢? 6. 注释写什么 created by, date, time ,谁关心你这个啊,看 phpdoc 文档去 |
9
tanteng 2016-06-01 15:19:25 +08:00
现在做框架貌似简单多了,用 composer 管理组件,一个路由功能,一个模板功能,就是最简单的框架了,要什么功能就装什么组件
|
11
Lpl 2016-06-01 18:53:43 +08:00 via Android
我有个问题...php 写框架很好写么?有个室友做 php 的,他说他写了好多框架了
|
12
cxbig 2016-06-01 21:48:13 +08:00 1
@Lpl 框架这东西想怎么自定义都行,问题在于自己搭的框架别人可能不熟悉,那么团队合作就会有冲突。还有各种安全机制不一定做到位。光能跑起来是不够的。
|
13
thenbsp 2016-06-01 21:55:26 +08:00
define('DS', DIRECTORY_SEPARATOR);
一直没搞懂这么定有什么意义?难道只是为了短?最早见过它是在 CakePHP 里,后来看过好几个开源项目都这么写,返正我是接受不了紧紧为了短一些就去得复定义一下常量。。。 |
15
thenbsp 2016-06-01 22:06:12 +08:00
@wjfz 这跟 windows 下出现问题有毛线关系,这货不就是目录分隔符嘛,我疑问的是为什么不直接使用 DIRECTORY_SEPARATOR 而非要把它再定义一遍?难道只是为了短?
|
16
cankoor 2016-06-01 22:15:30 +08:00
缺少事件机制,可以加上。
|
17
Jakesoft 2016-06-02 01:02:01 +08:00
我还写过一个 cms 呢,就不拿出来秀了
|
18
freewheel 2016-06-02 02:09:08 +08:00 via iPhone
m
|
19
wwwicbd OP @cxbig
谢谢. Model 和 Controller 的设计还没想好,. 用 ThinkPHP 的时候把处理全放在 Controller 里了,Model 几乎没用到; 用 Ruby on Rails 的时候 Model 就非常重. 还有就是 Model 和 DB 之间分工, 这个也还没想清楚. |
20
wwwicbd OP @Chappako
谢谢. 1. 看了 FIG 的文档, 挺有用. IDE 用的 phpstorm, code format 的默认选项和文档里的建议几乎全部一致. 2. 已修改 3. 本来想用 composer 的, 但在我机器上有些问题(分配了超多的内存然后警告退出) 4. 已修改 5. 各层抽象还是 to do list, 一步步写 6. IDE 默认的 |
22
cxbig 2016-06-02 14:57:29 +08:00 1
@wwwicbd
- Model 分几个类,放不同的地方: 1. 和 DB 交互的, 2. 和 view template 互动的, 3. middleware 或 utility - Rails 可以把很多通用的 method 从 model 里抽出来,放 vender 或 lib ,成套的东西还可以自己做 gem |
26
yorelog 2016-06-03 15:48:22 +08:00
DIRECTORY_SEPARATOR 这个变量就是为了解决在不同系统差异的,再定义个 DS 没法理解
|