专门写这一篇文章来介绍 Phalcon 首先是因为本站的系统就是基于 Phalcon搭建的,第二就是先后两次接触 Phacon 体会差别比较大,第三就是就我现在觉得 Phalcon 其实是挺好的一框架怎么就没火起来呢,很郁闷,所以写这篇文章表达下自己的看法。
Phalcon 是一个基于 MVC 的 PHP 框架,因为其最终的交付形式是 C 语言编译成的 PHP 扩展,所以其比大多数 PHP 开发的框架速度都要快。Phalcon 提供了对主要关系型数据库、NoSql、缓存、日志、模板引擎、表单构建器、国际语言支持等各类功能的支持。想使用 PHP 构建高性能 REST API 以及完整的 Web 应用程序 Phalcon 绝对是理想之选。
Phacon 框架在2014年的时候,在国外框架排行中一度排到第二名,而2015年则直接跌出排行榜前10,而且现在国内使用 Phalcon 的公司也比较少。为什么像 Phalcon 这种运行快、封装好的框架就是不能像 Laravel 那样大红大紫呢,这里我根据我先后两次接触 Phalcon 讲下个人的看法。
第一次接触 Phalcon 是在我毕业进入第一家公司的时候,当时主要的工作是前端,偶尔会写一点 PHP 的代码,所以当时对 Phalcon 的感觉就是模模糊糊,总体感觉 Phalcon 还是挺复杂的,入门门槛很高,而且后面开始接触了Laravel,发现Laravel很容易上手,所以对 Phalcon 的感觉更加糟糕了。
第二次接触 Phalcon 就是在写支持我的这个博客的系统的时候,当时系统设计初衷是为了做一个 PHP 社区网站(后面停滞了),想着既然是做社区就要让社区本身体现 PHP 的强大,而 Phalcon 作为 PHP 框架里速度和易用性的担当就本选中了。这一次我才对 Phalcon 有了深入了解,才明白 Phalcon 比不过 Laravel 的原因,第一 上手慢, Phalcon 它本身设计应该说是对 WEB 开发需要的各个组件做了封装,并不像Laravel那样为开发者提供了一个 WEB 开发的 模版型框架 ,开发者使用Laravel只需要在特定的文件里配置路由、写 controller、写model即可,而如果你想使用 Phalcon 就必须先实现一套 模版 然后才可以轻松愉快的开发,比如 Phalcon 默认封装的 Log 模块是很难直接使用的,你必须做一个全局封装才能像 Laravel 里一样轻松愉快(也可能是习惯了 Laravel 的写法才有这种感觉)。第二 国内几乎没有 Phalcon 的社区,即使是国外的社区活跃度也并不高,遇到问题的话想要靠 google 来解决还是比较难的。第三 源码不是 PHP 写的,理解框架整体流程有难度,其实第这一点并不算阻碍,当前 Phalcon 的实现是基于 Zephir(下面有介绍)的,而作为 PHPer 想要读懂其源码几乎是没有什么压力。
Phalcon 2.0 之前都是用 C 实现的,2.0 开始使用专门为 Phalcon 设计的语言 Zephir 实现。Zephir 语法简单,整体上和 PHP 语法保持一致,所以对于 PHP 开发人员来说学习代价很低,可以说是2小时就能精通 Zephir。另外如果大家需要做一些 PHP 的扩展开发不妨选择 Zephir ,学习及开发成本绝对比 C 语言低很多。
Phalcon 框架本身实现上很完善再加上其基于 Zephir 的实现更加亲民,所以我个人整体感觉 Phalcon 还是挺好的,如果加上 Laravel 这种 艺术性 的设计绝对起飞!
非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。
功能待开通!
1.配置软件源 yum install epel-release rpm -ivh https://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi 2.启用remi源 /etc/yum.repos.d/remi.repo,在[remi]下边的enabled=0改为enabled=1 3.修改/etc/yum.repos.d/remi-php72.repo enabled=1即可。 4.安装php72 phalcon nginx及相关扩展 yum inst
array的key可以是Integer、string类型。其他类型的key会进行转化 包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。 Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。 数组和对象不能被用为键名。坚持这么做会导致警告
PHP数组合并有两种方式 数组运算符操作:+ The + operator returns the right-hand array appended to the left-hand array; for keys that exist in both arrays, the elements from the left-hand array will be used, and the matching elements from the right-hand array will be ignored. 两个数组相加结果为把第二个数组链接在第一个数组之后,如果两个数组有key重复的就
PHP 可变属性的官方中文版Exampl1例子是错误的 官方地址 Example 1 <?php class foo { var $bar = 'I am bar.'; var $arr = array('I am A.', 'I am B.', 'I am C.'); var $r = 'I am r.'; } $foo = new foo(); $bar = 'bar'; $baz = array('foo', 'bar', 'baz', 'quux'); echo $foo->$bar . "\n"; echo $foo->$baz[1]
phpQuery phpQuery是 PHP 服务端实现的处理Dom的一个开源库,让开发人员可以像使用jquery一样处理Dom。 坑 占用内存过大 phpQuery在每处理一个网页就会产生一个DOMDocumentWrapper对象,每个DOMDocumentWrapper 对象会被保存在静态成员$documents中(phpQuery::createDocumentWrapper中),这个变量是一个数组,每解析一个 网页数组元素就增加一个。 所以如果是在写cli运行的爬虫类的脚本,内存很快就会占用过大,严重的导致机器死机。 phpQuery::$documents[$wrapper-&g