类是php四大全局成员(常量 函数 类 接口)中的一员,全局成员有着不受作用域限制的优势,同时也存在名称唯一的限制。
命名空间的出现就能很好的去解决这个唯一命名的问题。
命名空间可以起到一个命名化块的作用,命名空间的命名可以随意起,但是一般建议跟目录一致,命名空间的命名规则参考变量的命名规则,不能是数字开头,不能是内部函数,且需要写在除declare指令外的第一行(注释不算在内)。
命名空间的两种写法:
namespace ns1;
namespace ns1{}
其中全局空间写做:
namespace{}
但是这里需要注意,如果用namespace ns1;的形式就必须所有命名空间都用namespace ns1;的形式,如果用namespace ns1{}的形式就必须所有命名空间都用namespace ns1{}的形式。
下面将autoload.php自动加载做一个命名空间版本的升级:
实例
<?php //类的自动加载 spl_autoload_register(function($className) { // echo $className;//可以先echo一下检查下要加载的类 // echo '<hr>'; //将类的命名空间与类文件所在的路径保持一一映射 $file = __DIR__.str_replace('\\',DIRECTORY_SEPARATOR,('\..\..\\'.$className)).'.php';//绝对路径方式获取$file地址 // $file = str_replace('\\',DIRECTORY_SEPARATOR,$className).'.php';//相对路径方式获取$file地址 // echo $file;//地址错误的情况下,可以检查下地址的内容 //判断$file是否是已存在的文件夹 if(!is_file($file)&&file_exists($file)) { //如果不是则抛出错误 throw new \Exception('文件名不合法或不存在'); } //没问题则引入$file的地址 require $file; });
运行实例 »
点击 "运行实例" 按钮查看在线实例
以下面的文件做为测试:
Demo(文件夹)
app(文件夹)
admin(文件夹)
controller(文件夹)
Login.php(php文件)代码:
User.php(php文件)
model(文件夹)
Login.php(php文件)
User.php(php文件)
autoload.php(php文件,代码参考上文)
<?php namespace app\admin\controller; class Login { }
<?php namespace app\admin\controller; //控制器 在User控制器文件中 使用User模型文件 use app\admin\model\User as UserModel; class User { public function index() { return UserModel::getInfo(); } }
<?php namespace app\admin\model; class Login { }
<?php namespace app\admin\model; class User { static function getInfo() { return '获取到用户信息'; } }
demo.php(php文件)
<?php //引入类的自动加载器 require 'app/admin/autoload.php'; //通过命名空间引入各个类文件,其中遇到重名的需要用as进行重命名的处理操作 use app\admin\controller\Login; use app\admin\controller\User; use app\admin\model\Login as LoginModel; use app\admin\model\User as UserModel; //将所有引入的类进行实例化 $loginController = new Login; $UserController = new User; $loginModel = new LoginModel; $UserModel = new UserModel; //调用User类中的index() echo $UserController->index();
正常输出:获取到用户信息。
msql初体验
sql语句四种分类:
数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL
DQL:基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>。
DML:用来对数据库进行操作,常用的如:查询:SELECT,插入:INSERT,更新:UPDATE,删除:DELETE,即增删改查中的增删查改。
DDL:主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,一般主要在建立表时使用。
DCL:数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。