主页 > 知识库 > 网络编程 > PHP >

PHP

Fuel PHP 开发框架入门教程

来源:tutsplus 作者:Philip Sturgeon 发表于:2012-12-26 09:43  点击:
Fuel PHP 确实是一个不错的 PHP 开发框架,CIT这里也对这个框架做一个全面的介绍,今天我们就来带大家通过一些实例入门。 这个教程的两个部分交会教你如何使用FuelPHP 开发框架,我们开始先学习一些基础的内容,然后我们在学习一些高级的技巧!让我们开始吧

QQ群:287671376,欢迎研究FuelPHP的朋友加入。
Fuel
PHP确实是一个不错的PHP开发框架,CIT这里也对这个框架做一个全面的介绍,今天我们就来带大家通过一些实例入门。

这个教程的两个部分交会教你如何使用FuelPHP 开发框架,我们开始先学习一些基础的内容,然后我们在学习一些高级的技巧!让我们开始吧。

简介

Fuel是一个基于PHP5.3全新的开发框架,它建立和测试在MVC架构思想下,并且融合了许多已经存在开发框架的概念,1.0已经发布了,但是这个框架仍然在做大量的开发工作,这边文章将告诉你如何快速使用FuelPHP,但一开始让我们先了解一些基础的内容。

了解MVC

MVC(Model-View-Controller)思想运用在许多的开发框架中例如:CodeIgniter, Zend Framework, Symphony 以及 Ruby on Rails,如果你对此感到陌生,需要先从这里开始。

对于这些全新的架构,MVC是一个将你的开发应用程序进行开发分离的思想,首先是控制器(Controller),它同用户前台逻辑打交道,然后通过模型(Model)的方法调用数据库中的内容,最后通过试图(View)将结果显示出来,试图包括访问者能够看到的内容,包括AJAX或者其他输出的一些错误信息。

一个更佳深入了解FuelPHP的文档可以在 Fuel MVC Documentation(http://fuelphp.com/docs/general/mvc.html)看到,这里我们就略过了,如果想要深入的了解大家可以阅读这篇内容。

我们先开始一些基础的内容,这些东西看上去很简单,但确实让人激动。

 

1.安装

最简单的安装可以从GitHub上面下载ZIP的压缩包,然后解压安装到所有*nix系统,例如Linux或者Mac OS X,如果你的系统安装了Git,安装Git是非常简单的,然后你可以通过这样的方法来更简单的开发你的应用程序。

 

$ curl get.fuelphp.com/oil | sh

 

这里你需要安装一个非常有限版本的“oil”,这时一个命令行字符工具集,通过它你可以轻松创建你的应用,这里点看上去很像Ruby。

我们先来创建一个基础的应用:

 

$ oil create blog

 

这里将会在开发框架中创建一个基本的blog应用,所有的文件夹会自动创建完毕,如果你遇到一些问题,可以看看这里http://fuelphp.com/docs/installation/instructions.html

然后启动你的服务器,你可以在浏览器中输入http://localhost/test/public看到FuelPHP的欢迎页面,

文件结构

在应用根目录下,你可以看到三个部分的内容

fuel/ – 你所有的代码都在这个文件夹中进行处理

public/ – 这里是你需要访问的静态资源,例如css、images或者js

oil – 一个可扩展的命令行字符集,通过它可以简化你的开发,通过命令的方式你可以轻松构件你的程序,例如:自动生成控制器、模型方法,自动生成脚手架信息。

 

在fuel/中包含几个重要的文件夹:

app/ – 所有你开发的应用,这里包含控制器、模块、试图

core/ – 这是Fuel自己的核心. 如果这里你使用git,将会很轻松的对这里的内核进行更新

packages/ – Fuel 拥有一个很强大的包,这里包含三个核心包:oil、auth(权限控制),ORM,这些包在你开发的时候可以调用,默认这些包是不备加载的,如果你需要的话可以在配置中进行单独的配置。

 

重要的app/目录

config/ – 所有核心的配置,尤其是“config.php” 文件.

classes/ – 这里是所有 Controllers, Models, helper 类, 业务逻辑处理类, 如果你需要在这里编写你自己的代码,所有的名称需要是小写。

classes/controller/ – 这就是控制器放置

classes/model/ – 这里是模型放置的位置,尽管他们其实仅只是另一个类。

views/ – 将你的试图文件创建独立的文件夹放在这个里面

 

2.Hello World

让我们删除fuel/app/classes/controller/welcome.php,改成我们自己的,文件命名为:hello.php

在这个文件中,我们增加下面的代码。

 

class Controller_Hello extends Controller {

   public function action_index()
   {
       echo "Hello World!";
   }
}

 

然后我们打开浏览器,访问:http://localhost/test/public/index.php/hello,你可以看到浏览器中输出了字符串“Hello World”,这里的action_前缀符是为了让我们避免控制器方法和一些共享类设计冲突用的的,例如:list,PHP中已经使用了这个名称。

我们这里地址默认的转法规则是跳转到welcome.php,现在我们需要在fuel/app/config/routes.php中进行修改,修改代码中的_root_。

 

return array(
  '_root_'  => 'hello',  // The default route
);

 

你的第一个试图

创建文件fuel/app/views/hello.php,然后增加

 

<h1>Hello!</h1>
<p>Hey <?php echo $name ?>, how's it going?</p>

 

然后修改控制器

 

class Controller_Hello extends Controller {

   public function action_index()
   {
       echo "Hello World!";
   }

   public function action_buddy($name = 'buddy')
   {
       $this->response->body = View::factory('hello', array(
           'name' => $name,
       );
   }
}

 

现在我们通过地址http://localhost/test/public/index.php/hello/buddy或者http://localhost/test/public/index.php/hello/buddy/John来访问,你可以看到 $name变量已经被传递了地址中的值,这个方法被通过试图的extract()执行了,在模板中就可以直接的显示出来。

3.基础配置

就像你看到的那样,Fuel可以完成一些基本的控制器/试图的操作,下面我们来做更多事情。我们首先修改一些基本的配置,让我们打开:fuel/app/config/config.php,然后设置一些内容。

 

/**
* index_file - The name of the main bootstrap file.
*
* Set this to false or remove if you using mod_rewrite.
*/
'index_file'   => 'index.php',

 

如果你的mod_rewrite已经安装了,可以修改默认的地址转发规则,通过.htaccess将所有的请求传递给index.php,这样在地址中就不需要看到index.php文件了。

下面我们来创建数据库,这里我们选择的是MySQL,管理数据库你可以通过桌面GUI,类似phpMyadmin或者直接使用命令行。

 

mysql> create database blog_example;

 

打开fuel/app/config/db.php ,设置Fuel::DEVELOPMENT数组,类似这样:

 

Fuel::DEVELOPMENT => array(
  'type'         => 'mysql',
  'connection'   => array(
     'hostname'   => 'localhost',
     'database'   => 'blog_example',
     'username'   => 'yourmyseluser',
     'password'   => 'yourmysqlpassword',
     'persistent' => false,
  ),
  'table_prefix' => '',
  'charset'      => 'utf8',
  'caching'      => false,
  'profiling'    => false,
),

 

接下来,我们开启orm以及auth包,通过下面的代码:

 

/**
* These packages are loaded on Fuel's startup.  You can specify them in
* the following manner:
*
* array('auth'); // This will assume the packages are in <code>PKGPATH</code>
*
* // Use this format to specify the path to the package explicitly
* array(
*     array('auth'  => PKGPATH.'auth/')
* );
*/
'packages'  => array(
  'orm',
  'auth',
),

 

这些是我们这个教程所需要的几个基本的步骤。

技巧:创建一个虚拟站点

我们可以在Apache中创建一个虚拟站点来满足我们的开发:

 

<VirtualHost 127.0.0.1>
  DocumentRoot /home/phil/Sites/blog/public
  ServerName local.blog

  <Directory /home/phil/Sites/blog>
     Options All
     AllowOverride All
  </Directory>
</VirtualHost>

 

注意:这里你可以将“local.blog”替换为你需要的域名,这样让开发看上去更像在互联网上面进行,但是需要注意的是在hosts文件中需要增加一条规则,将域名转发到127.0.0.1。

4.启动开发

我们了解了一些控制器试图以及配置的工作以后,你可以很快的进入开发工作了,这里为了进行快速开发,有一个非常好的办法:Scaffolding(脚手架)

脚手架是我们在Ruby On Rails上面看到的一个操作模式,使用它你可以轻松的通过命令行建议你需要的数据管理页面,你如果需要增加,编辑,删除内容,你可以通过oil的“oil generate scaffold”来实现。

所以这里我们需要创建一个简单的博客,我们需要在命令行中写入“$ oil g scaffold post title:string summary:varchar[250] body:text”,oil将会自动的创建你所需要的基本文件。

 

Creating model: /home/phil/Sites/blog/fuel/app/classes/model/post.php
Creating migration: /home/phil/Sites/blog/fuel/app/migrations/001_create_posts.php
Creating controller: /home/phil/Sites/blog/fuel/app/classes/controller/posts.php
Creating view: /home/phil/Sites/blogfuel/app/views/posts/index.php
Creating view: /home/phil/Sites/blog/fuel/app/views/posts/view.php
Creating view: /home/phil/Sites/blog/fuel/app/views/posts/create.php
Creating view: /home/phil/Sites/blog/fuel/app/views/posts/edit.php
Creating view: /home/phil/Sites/blog/fuel/app/views/posts/_form.php
Creating view: /home/phil/Sites/blog/fuel/app/views/template.php

 

你可以看到这里会出现一个“post”的模型和控制器,我们在命令行中输入的格式“fieldname:fieldtype[optional-length]”,其中titile用的是“字符串”,长度是根据你使用的MySQL来决定的, :varchar[255]是数据库类型需要支持的。

 

在命令行运营的时候,我们需要执行我们的迁移类(migrations),一个migrations是纪录我们数据库的更改,在开发和部署运营的时候这个就变的非常有用,每个开发者可以增加自己的迁移类,这样只需要执行下这个命令,就不会出现“缺少字段”或者“数据表不存在”的情况了。

 

执行迁移类可以很容易的输入:

 

$ oil refine migrate
Migrated to latest version: 1.

 

现在,你可以在浏览器中输入:http://local.blog/posts

如果你需要创建控制器、模型或者迁移类,并且他们全部都不在一起,你可以这样轻松实现:

oil g controller, oil g migrate, oil g model

 

模板

你可能已经注意到了,在上面的步骤中oil已经创建了一个文件:

Creating view: /home/phil/Sites/blog/fuel/app/views/template.php

这个文件是运行命令行脚手架的时候自动创建的,你可以在这个页面修改你需要的内容,例如修改css、js增加logo以及其他你需要的操作。

 

当你创建一个新的控制器,你可以继承自Controller_Template,来替代常用的Controller。

你过你需要使用不同的模板,你可以修改模板的$template属性:

 

class Users extends Controller_Template {
   public $template = 'alternative';
}

 

你需要使用fuel/app/views/alternative.php来替代fuel/app/views/template.php

验证你的表单

验证是校验你用户提交数据是否符合规定数据格式的一种方法,如果符合某种规则,你可以将数据插入到数据库,否则则抛出一个错误的信息。

 

默认的,使用脚手架是没有数据校验的,因为开发者对应用开发都有不同的需求,这里我们需要根据实际指定的规则情况来对数据进行校验。

 

下面我们以blog为例,来看下创建一个内容方法。

 

 public function action_create($id = null)
{
  if (Input::method() == 'POST')
  {
     $val = Validation::factory();

     // Add a field for title, give it the label "Title" and make it required
     $val->add('title', 'Title')
        ->add_rule('required');

     // Now add another field for summary, and require it to contain at least 10 and at most 250 characters
     $val->add('summary', 'Summary')
        ->add_rule('required')
        ->add_rule('min_length', 10)
        ->add_rule('max_length', 250);

     $val->add('body', 'Article body')
        ->add_rule('required');

     if ($val->run())
     {
        // Make a post based on the input (array)
        $post = Model_Post::factory($val->validated());

        // Try and save it
        if ($post->save())
        {
           Session::set_flash('notice', 'Added post #' . $post->id . '.');
        }
        else
        {
           Session::set_flash('notice', 'Could not save post.');
        }
         
        Response::redirect('posts');
     }
     else
     {
        $this->template->set('error', $val->errors());
     }
  }

  $this->template->title = "Posts";
  $this->template->content = View::factory('posts/create');

}

 

我们这里可以看到验证类,像这样被自动加载,对每个字段进行一个校验,如果$val->run() ,则通过Model_Post工厂类返回的实例将数据发送给$val->validated(),否则出错则显示模板,将错误信息$val->errors()传递过去。

使用你的知识来构件你自己需要的程序形式,作出你喜欢模式的开发。

 

使用任务(Task)

FuelPHP可以通过oil来运行一个任务,这里我们举例,使用wget或curl以及其他的方式,在计划任务里面来抓取数据,这里我们可以创建一个任务fuel/app/tasks/robots.php:

 

 

class Robots {

  public static function run($speech = null)
  {
     if ( ! isset($speech))
     {
        $speech = 'KILL ALL HUMANS!';
     }

     $eye = \Cli::color("*", 'red');

     return \Cli::color("
              \"{$speech}\"
                  _____     /
                 /_____\\", 'blue')."\n"
.\Cli::color("           ____[\\", 'blue').$eye.\Cli::color('---', 'blue').$eye.\Cli::color('/]____', 'blue')."\n"
.\Cli::color("          /\\ #\\ \\_____/ /# /\\
          /  \\# \\_.---._/ #/  \\
         /   /|\\  |   |  /|\\   \\
        /___/ | | |   | | | \\___\\
        |  |  | | |---| | |  |  |
        |__|  \\_| |_#_| |_/  |__|
        //\\\\  <\\ _//^\\\\_ />  //\\\\
        \\||/  |\\//// \\\\\\\\/|  \\||/
              |   |   |   |
              |---|   |---|
              |---|   |---|
              |   |   |   |
              |___|   |___|
              /   \\   /   \\
             |_____| |_____|
             |HHHHH| |HHHHH|", 'blue');
  }
}

 

只需要输入“oil r robots”,或者通过“oil r robots 'Kill all Mice' ”来使机器人说写其他的。

概述

如果你按照每个步骤去做,你可以知道哪些文件非常重要,通过配置Apache和mod_rewrite(其他的服务器也可以很好的运行),创建一些简单的控制器和试图验证,使用脚手架来简化你的开发,生成代码。

这时候你应该有足够的知识来创建一些非常简单的应用了,接下来如果有时间我们会介绍一些高级的应用技巧例如ORM或者auth权限验证以及文件上传,敬请期待。

 

CIT信息网翻译


    有帮助
    (10)
    100%
    没帮助
    (0)
    0%