目录
phalcon框架使用指南,phalcon使用指南
首页 php教程 php手册 phalcon框架使用指南,phalcon使用指南

phalcon框架使用指南,phalcon使用指南

Jun 13, 2016 am 08:45 AM
cookie 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 源码,多模块模式开发用这样的目录结构也是不错的,希望能帮到别人

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

爱思助手怎么用-爱思助手使用教程 爱思助手怎么用-爱思助手使用教程 Mar 06, 2024 pm 12:10 PM

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

exescope怎么用?详细使用教程 exescope怎么用?详细使用教程 Mar 13, 2024 pm 10:40 PM

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

小黑盒使用教程 小黑盒使用教程 Feb 23, 2024 pm 05:10 PM

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

企业微信怎么用-企业微信的使用教程 企业微信怎么用-企业微信的使用教程 Mar 04, 2024 pm 02:28 PM

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

迅雷磁力链接怎么用-迅雷磁力链接使用教程 迅雷磁力链接怎么用-迅雷磁力链接使用教程 Mar 05, 2024 pm 05:22 PM

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

ons模拟器怎么用-ons模拟器使用教程 ons模拟器怎么用-ons模拟器使用教程 Mar 04, 2024 pm 01:10 PM

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

向日葵远程控制软件怎么用-向日葵远程控制软件使用教程 向日葵远程控制软件怎么用-向日葵远程控制软件使用教程 Mar 04, 2024 pm 10:20 PM

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

书旗小说使用教程 书旗小说使用教程 Mar 14, 2024 am 08:28 AM

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

See all articles