对比一下新旧版框架

#1 nnhuzz

1 新版目前只支持mysql,如果想做oracle还得用旧版不知道新版什么时候可以支持多种数据库?
2 新版已经实现参数化数据库操作,安全性肯定比旧版要好,如果还能加入事务支持就更完美了
3 旧版的模板引擎可以配置标记,新版却不可以,结果新版中每个放标记的地方都得多敲一对“<>”比较蛋疼,建议jake参考一下微擎的模板引擎中的标记处理方式,它可以自行区分前台js用{}赋值时不会误识别,我觉得新版的处理方式跟这个很像,为什么不能像微擎那样只用“{}”就好了呢?另外,微擎还可以用"{php $a=$b*$c;....}"的方式在前台写比较复杂的代码,是否可以考虑考虑?
4 我把旧版改了一下,可以支持pdo操作,目前实现oracle的pdo,附给jake看一下是否能有点帮助?
5 另外,现在线上发布的3.1版框架还有bug,就是controller的autodisplay里边有一个this->v->engine..,从跟踪的情况来看应该是v 的 engine已经不存在了的,直接删除"engine"就可以了

老提示验证码错误,附件个数不足了,明天再传吧

2017-03-06 00:56:58

#2 jake

1. 多数据库是个伪命题,并不常用,新版的想法是支持最常规的mysql,然后把驱动和model结合、精简到最小化,那么选其他数据库改个model也不难,之前论坛好像有人发过。
2.事务支持sql也就支持https://github.com/SpeedPHP/manual/blob/master/%E6%95%B0%E6%8D%AE%E6%93%8D%E4%BD%9C-SQL%E6%94%AF%E6%8C%81%E5%8F%8A%E5%85%B3%E8%81%94%E5%AE%9E%E7%8E%B0.md三事务支持

3. 这个问题在另一帖回答http://www.speedphp.com/thread-5065-1-1.html

4. 旧版当时实现pdo的mysql和sqlite时,也考虑过oracle,不过oracle相对跟其他两者不太一样,所以没做pdo版的oracle。

5. 遗漏了,抱歉,感谢指出。已修复https://github.com/SpeedPHP/speedphp/commit/87c5b8fe0274d635641bf679dfe0aa4e181cede6

2017-03-06 09:22:56

#3 nnhuzz

     我想说一点关于事务的看法,我认为框架支持事务还有很有必要的,相对复杂的业务逻辑会在进行多表操作时要求使用事务以防止其中一步出错后可以退回到事情还没发生过的状态。
    我对speed是寄予了很大期望的,这几年做的web项目都是用的speed框架(为了适应业务需求,对框架也进行了一些扩展),认识其它的框架也是从speed出发的,不得不说speed是个好入门,好举一反三地学习其它框架~
   jake给的“数据操作-SQL支持及关联实现.md”这个帮助文档我有看过,使用sql语句的方式启动事务,这种写法目前好像在mysql能行,其它的数据库不知道行不行,不过对于新版的框架,pdo在接口层面上已经给出了启动事务、提交、回滚的调用,我觉得直接加进Model里边就可以了,这样兼容性不是更好一些?

     我对web项目的看法:1 能遵循mvc的规则;2 能进行切面编程(旧版框架可以,新版框架需要在BaseController处理); 3 数据库操作能支持事务;4 不错的模板引擎(由于ajax的广泛应用,模板强不强悍好像越来越不重要了) ;常见的中小规模的web也就这样了。speed再往前走几步,搞定spring之流应该不是什么大问题吧~

附昨天没提交成功的代码,oracle的情况应该跟mysql差不多,就是limit那里有点不同而已,另外自行扩展了一个带参的ModelEx

2017-03-07 02:16:59

#4 jake

感谢支持,oracle跟mysql不同的地方一个是自增,一个是limit。

事务的问题,其实很简单,都是两个简单的sql,所以只要能执行到这两个sql就行。

集成到model是没有太大意义的,一句话封装一句话,这是sp框架不会做的事情。

2017-03-08 09:45:54