phalcon框架使用指南,phalcon使用指南
phalcon框架使用指南,phalcon使用指南
初次认识phalcon是在刚学php的时候,最近终于有机会用上了.故此说说使用上的一些感受
个人是很喜欢phalcon这套框架的方式,使用依赖注入,让代码组织很灵活,耦合也很低.但是,也许是框架东西太多了,遇到几个坑. github上一年以上的issue也还没解决.不过有一定开发经验的话,还是可以自己修复的.被这几个坑浪费了不少时间....
第一个是view.
phalcon的view,可以分成两大部分,一是全局的layout,二是controller/action的部分, 让使用时更加方便,设置好layout后,只关注controller部分的view即可. 但是关于view的路径设置问题,要关注这几个参数
MainView(主layout文件路径+文件名,但不包括扩展名,扩展名是在注入视图引擎时的key键值),
LayoutsDir(layouts的目录路径),
Layout(主layout文件名,可根据需求,动态使用layouts目录下的某个文件充当mainView),
PartialsDir(使用partial函数时,查找模板文件,如partial('main/header') 则查找路径是"/你的partialsDir/main/header.volt" . ),
ViewsDir(设置controller/action对应的模板文件所在的目录.和partialDir类似,自动查找目录下的模板文件)
BasePath(视图的目录的基础目录,phalcon和根据所有设置的dir来组合路径,查找模板文件,坑就是这了)
我刚开始用这个view的时候,使用的是绝对路径,因为绝对路径配置和管理比较方便.
然后我就被坑了.浪费了一个下午的时间调试.
根据官方文档给出的例子反复测试,发现这个view组件只能使用相对路径设置路径,BasePath不用设置.
一气之下就去翻phalcon的源码了.开发语言是Zephir,phalcon团队自己开发的语言.
语言语法比较简单,容易懂.然后看到了这句.
..]
看起来像是没有判断是相对路径还是绝对路径,直接组合起来了而已的,猜测是这里引发了问题.
并且是直接按顺序解析action , layout , main layout这些模板文件.
于是想验证一下.所以我写了几个调试文件,打算调试一下.
翻查phalcon源码过程省略1000字...找到必然会调用,并有路径处理的几个主要方法,继承View相关的几个class
这里也强调下,很多人喜欢用echo,一般情况是没问题, 但最好还是用文件记录吧,因为echo局限性其实挺大的, 你不知道echo buff什么时候打开,什么时候关闭..使用文件来记录log最保险了.
我测试的代码,使用多模块的方式.
BaseView文件,继承phalcon的view,并且打开这个方法的报错信息
BaseVolt文件,继承模板引擎volt
view注入代码,和目录结构如图
log记录如下
页面输出如下:
跟想像的一样,使用绝对路径时,无论如何,phalcon都是直接拼接以上设置的路径,
当开发者想动态使用controller/action的view,但layouts主目录又在上层目录时,就会出问题.
phalcon找的main layout路径是Phalcon\Mvc\View\Exception: View '/Users/Hin/work/phalcon_mode/app/modules/admin/views/layouts/main' was not found in the views directory
而我要的是/Users/Hin/work/phalcon_mode/app/views/layouts/main
然后找不到路径,main layout模板文件就不起作用了..........
<code>所以,真的就只是直接组合三个路径而已..所以,在设置路径的时候,就看自己的取舍了.</code>
phalcon view源码里三个变量中,basePath,viewDir(关键就是作者对viewDir这个变量理解有误,导致的bug) 看成是基础的路径. viewPath是依次执行_enginrender时的action view,layout view ,main view的路径.
理解了这个就可以自己慢慢设置好了路径了.....
解决办法有三个. 一 是自己写个View继承phalcon的View,处理路径. 思路是除了action的定位外,其他定位将viewDir变为空. 二 是修改phalcon源码,再自己编译一遍(在_enginRender外部处理好路径定位,去除_enginRender和路径定位的耦合) 三 是,不管了,直接使用相对路径(不设置basepath,viewsDir因为要动态定位action view,使用绝对路径, layoutsDir partialsDir使用相对路径) github上是有人发过这个bug的issue,可是作者没理会......
------------------------------华丽分割线------------------------------------
第二是model
还有个坑,是关于phalcon的model.一样是发了issue,作者没管.
根据文档model是提供了setter 链接描述 方法的,可实际上,setter却不起作用...
<code>然后像view一样,自己修复好...</code>
个人认为setter getter是非常好用的功能,但有些人却觉得没用,见仁见智啦. 我们的开发模式是model和controller 由不同的人开发,有了setter getter,数据调用者只管拿数据就可以了, model数据出问题,在model中修改即可,controller不需要改动.工作模式上耦合可以降低很多.
不过用这个框架的开发的项目夭折了,再深入点的坑也遇不到了.没有意外的话,短期内也不会用了.
最近心情比较糟糕.写得比较随便.当个记录好了.......
最后直接附上 github 源码,多模块模式开发用这样的目录结构也是不错的,希望能帮到别人

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

很多新手小伙伴还不了解爱思助手怎么用,所以下面小编就带来了爱思助手的使用教程,有需要的小伙伴赶紧来看一下吧。1、操作界面,是否对必要的组件进行安装(如下图所示);2、我的设备窗口,对相关的说明信息阅读(如下图所示);3、如果出现无法进行链接的情况,根据说明进行相关的操作(如下图所示);4、应用游戏窗口,快速的完成相关热门游戏的体验(如下图所示);5、对你需要使用的各种铃声进行下载选择(如下图所示);6、对各种高清的壁纸进行快速的下载(如下图所示);7、对刷机越狱的功能进行支持(如下图所示)。上面

exescope是一款功能强大的程序资源编辑工具,能够轻松将英文版的软件转化成汉化版,那么新下载exescope要如何使用呢?如果你也是个新手用户,就快来看看下面的详细教程吧。 exescope使用教程 1、打开eXeScope,点击左上角的文件,在弹出的选项中点击【打开】,选择您要打开的文件。 2、打开软件后,您可以看到很多控件。 3、可以直接用输入数据的方式修改每个控件的大小、位置、内容,也可以直接点击上面的对话框编辑器,直接拖动程序界面上的控件。调整好控件后点击【保存】就可以了

小黑盒是能够很好用的游戏平台,那么这个软件具体该怎么使用呢?用户们在使用这个软件里的时候会遇到很多问题,有着不同的解决方法。这篇小黑盒多功能使用方法教程汇总就能告诉大家如何使用,下面就是详细介绍,赶紧看看吧!小黑盒使用教程【2024-01-31】小黑盒买的cdkey怎么兑换【2024-01-31】小黑盒买的游戏怎么入库steam【2024-01-31】小黑盒cdkey可以退款吗

很多小伙伴不知道企业微信怎么用,所以下面小编就分享了企业微信的使用教程,一起去看看吧,相信对大家会有帮助。第一步:点击“企业微信”图标进入企业微信,在消息板块我们可以加入群聊与同事聊天(如图所示)。第二步:在企业微信主界面,点击“通讯录”(如图所示)。第三步:进入通讯录板块,在通讯录板块我们可查看自己的联系人(如图所示)。第四步:在企业微信主界面,点击“工作台”(如图所示)。第五步:进入工作台板块,在工作台板块我们可进行公司日常的小工作(如图所示)。第六步:在企业微信主界面,点击“我”(如图所示

近期有很多小伙伴咨询小编迅雷磁力链接怎么用,接下来就让我们一起学习一下迅雷磁力链接的使用教程吧,希望可以帮助到大家。第一步:首先我们打开安装好的迅雷,点击新建按钮,如图所示。第二步:然后在网上找到一个磁力链接,我们复制粘贴到如下图所示位置,点击确定,如图所示。第三步:弹出资源的详细下载目录,我们勾选要下载的资源,选择好存储目录,点击立即下载,如图所示。第四步:最后我们等待资源下载即可,如图所示。上面就是小编为大家带来的迅雷磁力链接怎么用的全部内容,希望对大家能够有所帮助哦。

近期有很多小伙伴咨询小编ons模拟器怎么用,接下来就让我们一起学习一下ons模拟器的使用教程吧,希望可以帮助到大家。第一步:首先下载onscripter工具如下图。第二步:然后下载ons模拟器游戏。第三步:接着把刚刚下载好的模拟器onscripter.exe文件直接拖入游戏目录双击onscripter.exe即可打开。第四步:直接运行游戏即可。上面就是小编为大家带来的ons模拟器怎么用的全部内容,希望对大家能够有所帮助哦。

现在许多小伙伴都会用到向日葵远程控制软件,但不少伙伴还不知道向日葵远程控制软件怎么用,今天小编就来详细介绍一下向日葵远程控制软件怎么用的全部教程,希望能帮助大家。第一步:首先打开向日葵远程控制软件,确保软件连接服务器成功(如图所示)。第二步:然后输入远程端向日葵识别码(如图所示)。第三步:可直接输入远程验证码进行无人值守远程连接,或通无需验证码远程端点击确定连接(如图所示)。第四步:然后点击“远程连接”,此时桌面控制会开始连接远程桌面(如图所示)。第五步:连接完成系统自动进入远程电脑的桌面环境,

书旗小说是一款书籍资源丰富可以免费阅读的工具,多数用户不知道书旗小说中的功能和工具如何的使用,下方会整理最详细的软件使用教程,接下来就是小编为用户带来的书旗小说多功能使用教程汇总,感兴趣的用户快来一起看看吧!书旗小说使用教程【2024-03-13】书旗小说书签在哪里【2024-03-13】书旗小说会员怎么关闭自动续费【2024-03-13】书旗小说vip可以从哪里获得【2024-03-13】书旗小说id在哪里看【2024-03-13】书旗小说邀请码在哪里输入【2024-03-13】书旗小说如何听
