什么是命名空间?
    从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。 例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。 具体举个例子,如文件foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。 另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。 这个原理应用到程序设计领域就是命名空间的概念。

    定义命名空间
    虽然任意合法的PHP代码都可以包含在命名空间中,但只有三种类型的代码受命名空间的影响,它们是:类,函数和常量。
    命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间**。

    <1>首先创建一modell文件夹,在modell目录下在创建一个model文件夹,然后在model目录下创建一个index.php文件
    image.png

    image.png
    image.png
    image.png

    使用命名空间:基础

    可以将 PHP 命名空间与文件系统作一个简单的类比。在文件系统中访问一个文件有三种方式:
    1.相对文件名形式如foo.txt。它会被解析为 currentdirectory/foo.txt,其中 currentdirectory 表示当前目录。因此如果当前目录是 /home/foo,则该文件名被解析为/home/foo/foo.txt。
    2.相对路径名形式如subdirectory/foo.txt。它会被解析为 currentdirectory/subdirectory/foo.txt。
    3.绝对路径名形式如/main/foo.txt。它会被解析为/main/foo.txt。
    4.PHP 命名空间中的元素使用同样的原理。例如,类名可以通过三种方式引用:
    5.非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod();。
    6.限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。
    7.完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new\currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();



    MVC框架

    MVC概念与作用
    MVC是一种非常重要的设计模式,是三个字词的缩写,分别为:模型(Model)、视图(View)和控制器(Controller),MVC模式的目的就是实现web系统的职能分工,它强制性使应用程序的输入、处理和输出分开,可以各自处理自己的任务,是一种分层的概念,Model层实现系统中的业务逻辑,View层用于实现与用户的交互,Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作.

    MVC模式的工作原理
    1.视图(view)
    2.模型(model)
    3.控制器(controller)
    MVC的设计思路是把一个应用的输入、处理、输出流程按照model、view和controller的方式进行分离,这样一个应用被分成三个层(模型层,视图层,控制层)

    MVC模式的优点
    MVC是构筑软件非常好的基本模式,至少将业务处理与显示分离,强迫将应用分为模型、视图及控制层,使得你会认真考虑应用的额外复杂性,把这些想法融入架构中,增加了应用的可拓展性,如果能把握这一点,mvc模式会使你的应用更加强壮,更加有弹性,更加个性化

    MVC缺点
    MVC设计实现并不十分容易,理解起来比较容易,但对开发人员的要求比较高,mvc只是一种基本的设计思路,还需要详细的设计规划,模型和视图的严格分离可能使得调试困难一些,但比较容易发现错误,经验表明,mvc由于将应用分为三层,意味着代码文件增多,因此,对于文件的管理需要费点心思.

    什么是框架
    框架其实就是一个系统的半成品,是在一个给定的问题领域内,实现了一个应用程序的一部分设计,是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法,简单地说就是项目的骨架已经搭好,并提供了丰富的组件库,只增加一些内容或调用一些提供好的组件就可以完成自己的系统.

    ThinkPHP框架概述
    系统特点
    1. 第一次访问时为用户自动创建了项目所需要的全部目录结构。
    2. 采用模块和操作的方式来执行,简单易用,功能适中,符合中国WEB程序员的习惯.
    3. 完全采用PHP面向对象的思想。
    4. 基于MVC的开发模式。
    5. 内建丰富的SQL查询机制,操作灵活,简单易用。
    6. 采用自己开发的PHP模板引擎,同时也支持其他模板引擎,如Smarty。
    7. 使用各种缓存技术,如缓存页面静态化,提升效率,减少运行消耗。
    8. 框架提供一些常用的扩展类,直接使用即可完成一些常见的功能。
    9. 框架支持自定义扩展类库和扩展函数的使用
    10.采用人性化调试模式,可以快速解决项目开发时遇到的错误和异常。
    11.框架源码简单明了结构清析,方便二次开发。

    ThinkPHP框架源码的目录结构
    www WEB部署目录(或者子目录)
    ├─index.php 入口文件
    ├─README.md README文件
    ├─Application 应用模块目录
    ├─Public 应用资源文件目录
    └─ThinkPHP 框架目录
    ├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
    │ ├─Common 核心公共函数目录
    │ ├─Conf 核心配置目录
    │ ├─Lang 核心语言包目录
    │ ├─Library 框架类库目录
    │ │ ├─Think 核心Think类库包目录
    │ │ ├─Behavior 行为类库目录
    │ │ ├─Org Org类库包目录
    │ │ ├─Vendor 第三方类库目录
    │ │ ├─ … 更多类库目录
    │ ├─Extend 框架扩展目录
    │ ├─Tpl 系统模板目录
    │ ├─LICENSE.txt 系统类库映射文件
    │ ├─logo.png 框架LOGO文件
    │ ├─README.txt 框架README文件
    │ └─index.php 框架入口文件