Toggle Navigation
首页
Golang
PHP
Laravel
Magento
Linux
数据库
MySQL
Redis
Mongodb
热门知识
程序与生活
架构师之路
静态站点
GitHub
主页
PHP的命名空间
PHP的命名空间
09-09
Mark
1121
**为什么php中要使用namespace?** 假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespace的时候,我们会想各种命名规则来区分不同的类,比如project1_school1_class1_Student或者project2_school_class_Student。 引入namespace之后就可以将这个有效规避了,一个namespace就相当于对应一个文件路径,查找这个类的时候,就会去对应的文件路径查找类定义文件了。 **namespace的定义和使用** 定义: ```php <?php namespace Myproject; ?> ``` 或者: ```php <?php namespace Myproject{} ?> ``` 使用: ```php <?php use Myproject/School; use Myproject/School as School1; // 别名 ?> ``` 命名空间是运行时解析的。use就相当于一种声明,并不解析和加载。比如下面这个例子: test.php ```php <?php use my\name; require_once("/home/yejianfeng/handcode/test/namespace1.php"); $a = new my\name\A(); $a->Print1(); ?> ``` namespace1.php ```php <?php namespace my\name; class A{ public function Print1(){ echo 11; } } ?> ``` 虽然require_once在use下面,也是可以正常运行的,因为程序只有在new my\name\A()的时候才去加载命名空间my\name **全局类和命名空间类** 如果要new一个全局类使用 new \A() 如果要new一个命名空间类,使用new my\namespace\A()
最新文章
Golang内存问题处理
WebSocket详解
Gopher面试中的Coding(三)
Golang用os/signal包实现平滑重载配置文件
Nginx实现负载均衡的几种方式
Golang中子goroutine与主协程同步的四种实现
Dockerfile文件详解
Golang开发微信公众号
最热文章
Magento实现下载csv数据表格
1797
Laravel带有条件搜索的分页
1692
Magento上传文件、缩略图和导出CSV
1690
Magento添加Advanced Dataflow
1641
Golang开发微信公众号
1570
Magento后台添加rule规则
1543
Magento优化 – MySQL读写分离
1509
Magento常用模块分享
1401
热门标签
下载
laravel分页
上传
导出
Dataflow
微信公众号
rule
规则
读写分离
模块
shell
正则
Collection
binlog
命名空间
处理
内存泄漏
Git
string
composer
解锁
锁表
事务处理
函数
redis sentinel
架构
系统
time
package
读写
事务处理
日志分析
进阶
缓存
golang
表分割
schedule
fmt
事务
分布式锁
交叉编译
HTTPS
日志分割
Gopher面试
mongodb
Dockerfile
channel
多数据库
git服务器
gogs
重载配置
负载均衡
日志过滤
php
protobuf
发展方向
版本号
模型关系
goroutine
concat
json
mongodb
get
post
defer
panic
golang算法
算法
docker
elasticsearch
rpc
代码部署
redis
主从配置
写文件
protobuf
laravel
websocket
并发
量级
package
curl
生成插件
直接下载
数据类型
Shell
错误传递
成长
grpc
参数
Go指针
队列
protobuf
方法
Redis持久化
路上
风景
yum