phalcon-入门篇2(HelloWord与PhalconTools)

#phalcon-入门篇2(HelloWord与PhalconTools)#

本教程基于phalcon2.0.9版本

##前言## 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台

最近刚好趁着春节放假前几天摸鱼的时间为大家带来今天的phalcon教程,今天教程的内容只要是把phalcon运行起来以及在开发过程中的phalconTools工具的,在之后涉及到有代码教程都会存放在**<<教程代码库>>**项目中大家可以下载查阅,下面我们开始今天的phalcon之路希望大家喜欢.

注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术

附上:

喵了个咪的博客:http://w-blog.cn

教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorial

phalcon官网地址:https://phalconphp.com

phalcon中文社区:http://www.iphalcon.cn/

##1. Hello,Word!##

我们在学习很多语言框架刚开始接触的基本是都是**Hello,Word!**那么让我们来看看怎么在phalcon上输出Hello,Word!

我们先创建如下的目录结构在网站/目录 比如index.php的物理地址是 -> /phalcon/public/index.php

注意:phalcon的目录结构是松耦合的可以按照自己习惯使用对你来说最舒服的文件结构。

###1.1 入口文件index###

入口文件的主要作用初始化各项需要加载的实例,注册控制器,数据层,view层并且处理请求获得返回结果

我们在index.php加入如下代码:

use Phalcon\Loader;
use Phalcon\Mvc\View;
use Phalcon\Mvc\Application;
use Phalcon\DI\FactoryDefault;

try {

    // 创建自动加载(AutoLoaders)实例
    $loader = new Loader();

    // 通过自动加载加载控制器(Controllers)
    $loader->registerDirs(array(
        // 控制器所在目录
        '../app/controllers/',
    ))->register();

    // 创建一个DI实例
    $di = new FactoryDefault();

    // 实例化View 赋值给DI的view
    $di->set('view', function () {

        $view = new View();
        $view->setViewsDir('../app/views/');
        return $view;
    });

    // 处理请求
    $application = new Application($di);
    // 输出请求类容
    echo $application->handle()->getContent();
} catch (\Exception $e){
    // 异常处理
    echo "PhalconException: ", $e->getMessage();
}

这个时候我们访问一下index.php文件会发现有如下输出:

PhalconException: IndexController handler class cannot be loaded

这句话的意思是没有找到默认控制器无法加载,当我们在开发过程中遇到这种错误就需要我们检测我们需要的控制器是否存在了

###1.2 控制器IndexController###

注意:控制器文件首字母必须大写Controller首字母必须大小(在windows下不影响,但是为了编码规范请遵守)

接着我们在控制器文件IndexController.php中加入如下语句:

use Phalcon\Mvc\Controller;

// Index控制器类 必须继承Controller
class IndexController extends Controller {

    // 默认Action
    public function indexAction() {
        
        echo "<h1>Hello Word!</h1>";
    }

}

此时我们再次访问index.php会发现有如下输出

这个时候我们就成功的进入到了控制器处理了请求

###1.3 使用view进行渲染###

在MVC框架中当然离不开View我们来了解一下最基础的view使用

大家不难发现我们在index.php中我们也实例化了View并且赋值给了DI这个时候我们在views目录下创建一个index.phtml文件

加入如下代码:

<?php

echo 'This is a index!';

大家在访问index.php文件会获得如下返回

这个时候返回值处理就进入到了view层了

##2 PhalconTools工具##

在php开发中大家最长用的两个IDE一个是zendstudio一个是phpstorm(使用vim或者是纯文本编辑器的童鞋请绕过)

但是在进行phalcon开发的过程中会发现一个问题phalcon对于这些IDE很不友好没有提示,没有高亮处处报错,这些都是应为C底层框架引起的问题,不过肯定是有个解决方法的,还在苦恼的童鞋可以好好看下接下来的说明**(特别感谢@Marser提供)**

###2.1 phpstrom###

phpstrom是通过IDEA定制的php开发工具,也是官方推荐的开发工具

  1. 首先我们要下载phalcon-devtools包并且解压 下载地址:phalcon-devtools 也可以在 教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorial本篇教程代码中下载
  2. phpstrom导入下载好的开发工具

如上图所示,右键单击“External Libraries”,选择“Configure PHP Include Paths”,弹出如下操作框:

单点“+”按钮,在弹出的操作框中,选择到刚才phalcon-devtools的解压目录,然后双击选中“/ide/任一Phalcon版本/Phalcon/”目录,点击“应用”和“确定”即可。如上图所示,我选择的是2.0.8版本。

  1. phpstorm自动提示Phalcon语法

###2.2 zendstudio###

zendstudio是一款基于Eclipse zend官方维护的开发工具 喜欢eclipse的童鞋的最佳选择

  1. 下载代码提示包,然后解压 https://github.com/rogerthomas84/PhalconPHPDoc
  2. 配置 打开“/your/workspace/.metadata/.plugins/org.eclipse.php.core/language/”目录,会看到当前目录下,有一些类似“555a446a”或者“7697c88c”的目录,这些目录名称是随机生成的,每个目录当中都要将刚才解压后的Phalcon整个目录文件复制进去,否则不会生效
  3. 重启zend studio使用 重启zend studio,按“Project -> Clean -> Clean all projects”的步骤清除所有项目的编译状态,然后再按“Project -> Build All”的步骤重新编译所有项目的状态,zend studio即可识别Phalcon的语法并提示,如下图所示:

##3. 小结##

本小节主要是介绍了一下如果使用phalcon输出helloword并且进入view进行操作,还介绍了PhalconTools工具的使用,在下节我们会着重介绍一下优美的URL路由以及配置文件的使用,喜欢的童鞋请继续关注!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

Phalcon技术交流:364520707 PhalCon中文社区:287484785 欢迎大家的加入!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

Java Web 模板代码生成器的设计与实现

起因 项目中需要根据数据库表写很多Meta、Dao、Service代码,其中很多代码都是重复而繁琐的。因此如果有一个模板代码的生成器,就可以一定程度提高开发效率...

296100
来自专栏Golang语言社区

golang的垃圾回收(GC)机制

golang的垃圾回收采用的是 标记-清理(Mark-and-Sweep) 算法 就是先标记出需要回收的内存对象快,然后在清理掉; 在这里不介绍标记和清理的具体...

46070
来自专栏Grace development

NGINX宏观手记

任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结、翻译、整理 ,希望你可以知...

8420
来自专栏社区的朋友们

深入浅出 Nodejs( 二 ):Nodejs 文件模块机制

本篇教程关于Nodejs的文件模块机制,具体讲CommonJs规范以及Nodejs文件模块的实现原理。

55520
来自专栏Laoqi's Linux运维专列

Saltstack 远程操作(grains,pillar)服务安装+配置管理

25070
来自专栏Golang语言社区

Golang语言社区--【游戏服务器知识】多线程并发

引言:上篇文章说到了多进程并发式的服务端模型,如上一篇文章所述,进程的频繁创建会导致服务器不堪负载,那这一篇博客主要讲述的是线程模型和线程池的方式来提高服务端的...

35040
来自专栏用户2442861的专栏

跟我一起写Makefile:MakeFile介绍

http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:...

12920
来自专栏黄Java的地盘

如何实现一个HTTP请求库——axios源码阅读与分析

在前端开发过程中,我们经常会遇到需要发送异步请求的情况。而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率。

17320
来自专栏牛肉圆粉不加葱

Spark executor 模块② - AppClient 向 Master 注册 Application

前一篇文章简要介绍了 Spark 执行模块中几个主要的类以及 AppClient 是如何被创建的,这篇文章将详细的介绍 AppClient 向 Master 注...

8520
来自专栏java一日一条

servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时 候,发现 为什么st...

7120

扫码关注云+社区

领取腾讯云代金券