设计与架构目标:
CodeIgniter的目标是在最小化、最轻量级的开发包中得到最大的执行效率、功能和灵活性。
为了达到这个目标,我们在开发过程的每一步都致力于基准测试、重构和简化工作,拒绝加入任何对实现目标没有帮助的东西。
从技术和架构角度看,CodeIgniter按照下列目标创建:
·动态实例化。 在CodeIgniter中,组件的导入和函数的执行都是在被请求的时候才执行,而不是全局的。除核心资源外,系统不需要任何其他资源,因此系统默认是非常轻量级的。HTTP请求所触发的事件以及你设计的控制器和试图将决定哪些资源是需要加载的。
·松耦合。 耦合是指一个系统中组件之间的依赖程度。组件之间的依赖程度越低,系统的重用性和灵活性就越好。我们的目标是打造一个松耦合的系统。
`组件专一性。 专一性指的是组件对某个目标的专注程度。在CodeIgniter中,每一个类和方法都是高度独立的,从而可以最大程度的被复用。
在控制器中使用$this来访问它,通过$this你就可以加载类库、视图、以及针对框架的一般性操作。
URI 分段
如果遵循模型-视图-控制器模式,那么 URI 中的每一段通常表示下面的含义:
example.com/class/function/ID
- 第一段表示要调用的控制器 类 ;
- 第二段表示要调用的类中的 函数 或 方法 ;
- 第三段以及后面的段代表传给控制器的参数,如 ID 或其他任何变量;
和 包含了一些函数可以让你更容易的处理 URI 数据,另外,你的 URL 可以通过 进行重定向从而得到更大的灵活性。
控制器是整个应用的核心,因为它们决定了HTTP请求将被如何处理。
什么是控制器?
简而言之,一个控制器就是一个类文件,是以一种能够和URI关联在一起的方式来命名的。
eg:example.com/index.php/blog
上例中,CodeIgniter将会尝试查询一个名为Blog.php的控制器并加载它。
当控制器的名称和URI的第一段匹配上时,它将会被加载。
类文件中的类名称必须首字母大写
eg:
<?php
class Blog extends CI_Controller{
public function index()
{
echo "Hello World!";
}
}
而下面是无效的写法:
<?php
class blog extends CI_Controller{
}
另外,一定要确保你的控制继承了父控制器类,这样它才能使用父类的方法。
方法:
上例中,方法名为index()。“index”方法总是在URI中的第二段为空时被调用。
example.com/index.php/blog/index/
URI中的第二段用于决定调用控制器中的哪个方法。
向控制器中添加一个新的方法:
<?php
class Blog extends CI_Controller{
public function index()
{
echo "Hello World!";
}
public function comments()
{
echo "Look at this!";
}
}
example.com/index.php/blog/comments/
通过URI分段向你的方法中传递参数
如果你的URI多于两个段,多余的段将作为参数传递到你的方法中。
例如:
example.com/index.php/products/shoes/sandals/123
你的方法将会受到第三段和第四段两个参数("sandals"和"123")
<?php
class Products extends CI_Controller{
public function shoes($sandals,$id)
{
echo $sandals;
echo $id;
}
}
使用 CodeIgniter 驱动器
驱动器是一种特殊类型的类库,它有一个父类和任意多个子类。子类可以访问父类,但不能访问兄弟类。在你的控制器中,驱动器为你的类库提供了一种优雅的语法,从而不用将它们拆成很多离散的类。
通常情况下,应该多写点注释,这不仅可以向那些缺乏经验的程序员描述代码的流程和意图, 而且当你几个月后再回过头来看自己的代码时仍能帮你很好的理解。 注释并没有强制规定的格式,但是我们建议以下的形式。
有一些 PHP 函数在失败时返回 FALSE ,但是也可能会返回 "" 或 0 这样的有效值, 这些值在松散类型比较时和 FALSE 是相等的。所以当你在条件中使用这些返回值作比较时, 一定要使用严格类型比较,确保返回值确实是你想要的,而不是松散类型的其他值。
在检查你自己的返回值和变量时也要遵循这种严格的方式,必要时使用 === 和 !== 。
Zip 编码类
$name='mydata1.txt';$data='A Data String!';$this->zip->add_data($name,$data);// Write the zip file to a folder on your server. Name it "my_backup.zip"$this->zip->archive('/path/to/directory/my_backup.zip');
路径:'/xampp/htdocs/public/my_backup.zip'
根目录是在xampp所在盘符下如E:/
// Download the file to your desktop. Name it "my_backup.zip"$this->zip->download('my_backup.zip');