목차
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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Aisi Assistant 사용 방법 - Aisi Assistant 사용 튜토리얼 Aisi Assistant 사용 방법 - Aisi Assistant 사용 튜토리얼 Mar 06, 2024 pm 12:10 PM

많은 초보 친구들은 아직 Aisi Assistant 사용법을 모르기 때문에 편집자가 Aisi Assistant 사용법에 대한 튜토리얼을 제공할 것입니다. 필요한 친구들은 빠르게 살펴볼 수 있습니다. 1. 작동 인터페이스에서 필요한 구성 요소가 설치되어 있는지 확인합니다(아래 그림 참조). 2. 내 장치 창에서 관련 설명 정보를 읽습니다(아래 그림 참조). 관련 작업에 대한 지침(아래 그림 참조) 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

Little Black Box는 사용하기 매우 쉬운 게임 플랫폼인데, 이 소프트웨어를 구체적으로 사용하는 방법은 무엇입니까? 사용자는 이 소프트웨어를 사용할 때 많은 문제에 직면하게 되며 다양한 해결 방법을 갖게 됩니다. 이 튜토리얼 요약은 소형 블랙박스의 다기능 사용 방법을 알려줄 것입니다. 다음은 자세한 소개이므로 살펴보세요! 리틀블랙박스 이용 튜토리얼 [2024-01-31] ​​​​리틀블랙박스에서 구매한 시디키를 교환하는 방법 [2024-01-31] ​​​​리틀블랙박스에서 구매한 게임을 스팀에 저장하는 방법 [2024-01- 31] ​​리틀블랙박스에서 구매한 시디키는 반품이 가능한가요? 결제는요?

Enterprise WeChat 사용 방법 - Enterprise WeChat 사용 튜토리얼 Enterprise WeChat 사용 방법 - Enterprise WeChat 사용 튜토리얼 Mar 04, 2024 pm 02:28 PM

많은 친구들이 Enterprise WeChat을 사용하는 방법을 모르므로 아래 편집자가 Enterprise WeChat 사용에 대한 튜토리얼을 공유하겠습니다. 모두에게 도움이 될 것입니다. 1단계: "Enterprise WeChat" 아이콘을 클릭하여 Enterprise WeChat에 들어갑니다. 메시지 섹션에서 그룹 채팅에 참여하여 동료들과 채팅할 수 있습니다(그림 참조). 2단계: Enterprise WeChat의 메인 인터페이스에서 "연락처"를 클릭합니다(그림 참조). 3단계: 연락처를 볼 수 있는 주소록 섹션을 입력합니다(그림 참조). 4단계: Enterprise WeChat의 기본 인터페이스에서 "Workbench"를 클릭합니다(그림 참조). 5단계: 회사의 일상적인 작은 작업을 수행할 수 있는 작업대 섹션에 들어갑니다(그림 참조). 6단계: Enterprise WeChat의 기본 인터페이스에서 "나"를 클릭합니다(그림 참조).

Thunder 마그넷 링크 사용 방법 - Thunder 마그넷 링크 사용 튜토리얼 Thunder 마그넷 링크 사용 방법 - Thunder 마그넷 링크 사용 튜토리얼 Mar 05, 2024 pm 05:22 PM

최근 많은 친구들이 편집자에게 Thunder Magnet Links 사용 방법을 문의했습니다. 다음으로 Thunder Magnet Links 사용에 대한 튜토리얼을 배워 보겠습니다. 모두에게 도움이 되기를 바랍니다. 1단계: 먼저 설치된 Thunder를 열고 그림과 같이 새로 만들기 버튼을 클릭합니다. 2단계: 그런 다음 인터넷에서 마그넷 링크를 찾아 아래 그림에 표시된 위치에 복사하여 붙여넣고 그림과 같이 확인을 클릭합니다. 3단계: 리소스의 상세 다운로드 디렉터리가 팝업됩니다. 다운로드할 리소스를 확인하고, 저장 디렉터리를 선택한 후, 그림과 같이 Download Now를 클릭합니다. 4단계: 마지막으로 그림과 같이 리소스가 다운로드될 때까지 기다립니다. 위 내용은 편집자가 제공한 썬더 마그넷 링크 사용 방법에 대한 모든 내용입니다. 모든 분들께 도움이 되기를 바랍니다.

온 시뮬레이터 사용법 - 온 시뮬레이터 사용법 튜토리얼 온 시뮬레이터 사용법 - 온 시뮬레이터 사용법 튜토리얼 Mar 04, 2024 pm 01:10 PM

최근에 많은 친구들이 ons 시뮬레이터 사용법을 물어왔습니다. 다음으로 ons 시뮬레이터 사용법에 대한 튜토리얼을 배워보겠습니다. 이것이 모두에게 도움이 되기를 바랍니다. 1단계: 먼저 아래와 같이 onscripter 도구를 다운로드합니다. 2단계: 그런 다음 ons 에뮬레이터 게임을 다운로드합니다. 3단계: 그런 다음 방금 다운로드한 시뮬레이터 onscripter.exe 파일을 게임 디렉터리로 드래그하고 onscripter.exe를 두 번 클릭하여 엽니다. 4단계: 게임을 직접 실행하세요. 이상은 에디터가 가져온 온스 시뮬레이터 사용법에 대한 모든 내용입니다. 모든 분들께 도움이 되었으면 좋겠습니다.

Sunflower 원격 제어 소프트웨어 사용 방법 - Sunflower 원격 제어 소프트웨어 사용 튜토리얼 Sunflower 원격 제어 소프트웨어 사용 방법 - Sunflower 원격 제어 소프트웨어 사용 튜토리얼 Mar 04, 2024 pm 10:20 PM

요즘에는 많은 친구들이 Sunflower 원격 제어 소프트웨어를 사용하지만 여전히 많은 친구들이 Sunflower 원격 제어 소프트웨어를 사용하는 방법을 모릅니다. 오늘은 Sunflower 원격 제어 소프트웨어 사용 방법에 대한 모든 튜토리얼을 자세히 소개하겠습니다. 그것이 모두에게 도움이 되기를 바랍니다. 1단계: 먼저 Sunflower 원격 제어 소프트웨어를 열고 소프트웨어가 서버에 성공적으로 연결되는지 확인합니다(그림 참조). 2단계: 그런 다음 원격 해바라기 식별 코드를 입력합니다(그림 참조). 3단계: 무인 원격 연결을 위해 원격 인증번호를 직접 입력하거나, 인증번호 없이 원격 단말기를 통해 연결을 확인하기 위해 클릭할 수 있습니다(그림 참조). 4단계: 그런 다음 "원격 연결"을 클릭하면 데스크톱 제어가 원격 데스크톱에 연결되기 시작합니다(그림 참조). 5단계: 연결이 완료된 후 시스템은 자동으로 원격 컴퓨터의 데스크탑 환경으로 들어갑니다.

Shuqi Novel 사용 튜토리얼 Shuqi Novel 사용 튜토리얼 Mar 14, 2024 am 08:28 AM

Shuqi Novel은 무료로 읽을 수 있는 풍부한 서적 리소스를 갖춘 도구입니다. 대부분의 사용자는 Shuqi Novel의 기능과 도구를 사용하는 방법을 모릅니다. 다음은 소프트웨어 사용 방법에 대한 가장 자세한 튜토리얼입니다. 편집자는 사용자에게 Shuqi Novel의 다기능 튜토리얼 요약을 제공합니다. 관심 있는 사용자는 와서 살펴볼 수 있습니다! Shuqi Novel 사용법 튜토리얼 [2024-03-13] Shuqi Novel 북마크는 어디에 있습니까? [2024-03-13] Shuqi Novel 회원 자동 갱신을 끄는 방법 [2024-03-13] Shuqi VIP는 어디서 얻을 수 있습니까? 소설 [2024-03-13] 서기 소설 아이디 보는 곳 [2024-03-13] 서기 소설 초대 코드 입력하는 곳 [2024-03-13] 슈기 소설 듣는 방법

See all articles