Fuel PHP 的学期末总结

嗯……上了一门网页课,被课名唬了——Modern Web Development,结果一个学期上完之后没什么 Modern 的,Web Development 做的也就这样……

不过确实碰到一些配置的东西,这里就记录一下,省的以后如果还有需求 希望不会 会踩坑。

主要就是一些 default 的东西,没有修改 config 文件。

Fuel 下载与安装

主要都是使用命令行操作,并且从最后解压的结果来说文件都挺小的,这在我看来大概是……唯一的优点。

官方文档上只提供了使用 oil 的下载方式,学校机房也是 Linux 系统,所以用 oil 问题不大,Windows 上……完全不能用:

This currently only works on *nix systems (Linux, OS X, Unix, etc).

具体下载方式如下:

  1. install oil

    # install the quick installer
    $ curl -L https://get.fuelphp.com/oil | sh
    # create a new project
    $ oil create <project_name>
    
  2. use composer

    # create the default installation of the Fuel framework on virtual host root directory.
    $ cd /where/ever/your/virtualhost/root/is
    $ git clone git://github.com/fuel/fuel.git .
    $ composer install --prefer-dist
    

    或者……

    直接到 下载列表 下一个 zip 文件,解压后也是一样的。

    (这也是我们被要求做的方法)

然后,安装就完成了。

项目结构如下:

/docs/fuel/app/core/packages/public/.htaccessassets/index.phpoil

fuel 就是主要内核存在的地方,public 是访问是打开的 entry point 以及 assets 存放的地点,public 会调用 fuel 的文件去进行对应的操作。比如说 app/ 下面的结构也还有一个 MVC/MVP 内置实现可供选择。

如果在 Fuel PHP 中调用 Assets:: 去获取 assets,其对应的是 public/assets/ 下的内容。

MVC 部分

Controller

这里就简单的说一下用的 3 种 extendible controller。

  • Controller

    这就是比较直接的方式,目前使用的方式就是:

    class Controller_Home extends Controller{public function action_home() {return View::forge('home');}
    }
    

    假设该 controller 的路径为 fuel/app/classes/controller,这个 controller 的访问路径就是 默认ip/index.php 或直接使用 默认ip 进行访问。虽然文件名结尾是 php,不过访问的方式与 HTML 还是相似的。

  • Controller_Template

    这个是在存在可以复用的 layout 时使用,如:

    • controllers/home

      class Controller_Home extends Controller_Template{public $template = 'layout';public function action_home() {$view = View::forge('home');$this->template->title = 'Title File';$this->template->content = $view;}
      }
      
    • views/layout.php

      <!DOCTYPE html>
      <html lang="en">
      <head><title><?php echo $title; ?></title>
      </head>
      <body><?php echo $content ?>
      </body>
      </html>
      

    基本上还是 HTML 种嵌套 PHP 的代码,设定一些关键字然后做 data injection 这种套路。

  • Controller_Rest

    Restful Controller

    class Controller_m1_Color extends Controller_Rest
    {public function get_list(){return $this->response(array('foo' => Input::get('foo'),'baz' => array(1, 50, 219),'empty' => null));}
    }
    

    该 API 可以在 http://localhost/test/list.json?foo=bar 进行访问。

View

View 中的东西基本上可以算是 HTML,虽然结尾是 php,不过写法就是……HTML 中嵌套 PHP,上面已经举例了。

Model

目前来说,我还没找到能够在 model 文件夹下建立新的文件夹进行管理的方式,所以目前项目中的 Models 全都在一个文件夹下。还好东西比较少,不然管理起来就很麻烦了……

代码大致如下:

<?php
namespace Model;
use \DB;class ColorModel extends \Model {public static function add_color($color, $hex) {DB::insert('colors')->set(array('name' => $color,'hex' => $hex)) -> execute();}public static function get_color() {return DB::query('SELECT * FROM `colors`', DB::SELECT)->execute()->as_array();}public static function delete_color($id) {return DB::query('DELETE FROM `colors` WHERE id ='.$id) -> execute();}
}
?>

这方面的 API 我没有查的很仔细,而且直接使用 use \DB 似乎也是比较古早的用法,现在 fuel php 中提供了内置的 ORM,我这里也没有在使用。

而且这种直接使用 sql 方式绝对会有 SQL injection 的问题。

官方文档中有也有提供一些做法:

// find all articles
$entry = Model_Article::find('all');// find all articles from category 1 order descending by date
$entry = Model_Article::find('all', array('where' => array(array('category_id', 1),),'order_by' => array('date' => 'desc'),
));// find all articles from category 1 or category 2
$entry = Model_Article::find('all', array('where' => array(array('category_id', 1),'or' => array(array('category_id', 2),),),
));

使用这种比较合适的方法,Fuel PHP 内部会对输入的数据进行清理,从而预防 SQL Injection。

Fuel PHP 的学期末总结相关推荐

  1. 双非普通一本大一学生学期末课设——运动会比赛计分系统

    双非普通一本大一学生学期末课设--运动会比赛计分系统 并没有做文件系统-只能将就的看一下,也没有结构体 做的很粗糙,很烂,就是发出来纪念一下. 感觉有点像堆出来的一坨屎,但是好歹是自己儿子,为我的代码 ...

  2. 高一c语言期末试题及答案,学期末

    迎来了期末,你对这段时间来的表现和收获有怎样的了解和总结呢?下面是由出国留学网小编为大家整理的"2020高一学期末自我总结",仅供参考,欢迎大家阅读. 2020高一学期末自我总结( ...

  3. 计算机课程期末总结1000字,学期末总结1000字

    学期末总结1000字 大学三年即将过去,三年的时光收获匪浅.在感受校园清新气息的同时,接触了来自不同地方的同学和老师,在每个人身上,学到了不少为人处世的道理.对于涉世不深的我来说,这些都是宝贵的经历. ...

  4. 华为matebook14学计算机,学期末任务重?华为MateBook 14可以帮到你

    原标题:学期末任务重?华为MateBook 14可以帮到你 如今临近年底了,各种汇报总结接踵而来,不管是职场小白还是职场达人无一幸免.每天不仅要把应做的工作按时按量的完成,还要想办法把更为重要的汇报或 ...

  5. html5总结2000字,学期末个人总结2000字

    学期末个人总结2000字(一) 我们经过一个星期的紧张考试后,终于完事了.这些天可是把人折磨的不轻啊.以前我们考试总是会考很久,那时我们会有充足的时间去准备,即便是平时学的不是很认真,但只要考试前突击 ...

  6. 七年级计算机c语言测试题,2017年初一下学期数学期末检测试题

    2017年初一下学期数学期末检测试题 关键的七年级数学期末考试就临近了,付出就有回报,赶紧睡个好觉.别想分数高低,放松最为重要.下面是yjbys小编收集的初一下学期数学期末检测试题,希望大家认真练习! ...

  7. 计算机系期末个人总结范文,计算机系学生会学期末工作总结

    计算机系学生会学期末工作总结 计算机系学生会学期末工作总结 (XX-XX年学年度第一学期) 元旦到来,计算机系学生会第二学期的各项工作也喜摘硕果.在校系领导的亲切关怀下,在全体同学鼎力支持下,在全体学 ...

  8. 大二(上期)学期末个人学习总结

    本学期总感觉是稀里糊涂在各种催促中就匆匆度过了,为什么是催促呢?因为在这学期进行了专业分流,有了一个极其严厉的老师,会给我们布置 力所不能及的任务,需要我们通过自主学习完成任务.但是,说老实话,自己并 ...

  9. 能源15A1,A2燃烧学期末试题2018-01-02

    一简答题(40分) 1.简述湍流火焰的分类和特点(15分) 2.列举工程上5种常用的稳焰方法(10分) 3.根据碳的燃烧速度特点,可以分为那几个控制区?其特点是什么?(15分) 二,计算题(15分)( ...

最新文章

  1. jquery判断方法是否存在_判断图中是否有环的三种方法
  2. linux 卡在grub_安装Linux系统,Ubuntu时卡在这个界面不动了,有3个小时了。。显示:“正在运行update_grub”......
  3. 逆天改命,机械飞升:渐冻症科学家拒绝等死,将自己改造成了「半机械人」...
  4. 彻底关闭windows server 2008 IPv6
  5. 无状态逻辑服务器,无状态 | RESTful API 中文网
  6. 如何在64位win7下通过ODAC来访问Oracle服务器
  7. java为什么要定义接口_java为什么要定义接口等相关解释
  8. 使用Fiddler为满足某些特定格式的网络请求返回mock响应
  9. 软件工程师的十个“不职业”行为
  10. jquery cookie的用法
  11. 使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)
  12. 软考信息安全工程师培训精品课-更新中
  13. C# - 自动生成分页存储过程
  14. 内存管理(C语言中malloc和free的用法)
  15. Java 延时常见的几种方法
  16. 23.3.3 Web存储机制【JavaScript高级程序设计第三版】
  17. 基于单片机的智能鱼缸控制系统设计
  18. 手机备份True NAS(FreeNAS)+​FolderSync​爬坑
  19. 第三阶段应用层——1.5 数码相册—使用FreeType在LCD上显示单个字符
  20. Keepalived + Nginx - linux 灾备方案(实现主备、热备)

热门文章

  1. nodejs镜像问题如何设置镜像
  2. 【论文阅读及复现】(1998)无网格线探索布线算法 + Python代码实现
  3. m基于FPGA的通信数据帧加扰解扰verilog实现,包含testbench
  4. flash,php上传文件
  5. 圆角 border-radius
  6. junit-vintage-engine和junit-jupiter-engine之间的区别?
  7. 蒋涛:TUP,分享产品背后的技术和用户体验
  8. リヴァイア / 鱼妹
  9. 用机器学习计算工作技能匹配度
  10. MIT Molecular Biology 笔记6 转录的调控