PHP中的use、命名空间、引入类文件、自动加载类的理解

Python制作【大麦网】自动抢票程序 Python 的迅速崛起对整个行业来说都是极其有利的,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓点击这里。 阅读详情

PHP中的use、命名空间、引入类文件、自动加载类的理解

    <div class="postBody">
        <div id="cnblogs_post_body" class="cnblogs-markdown"><p>use只是使用了命名空间,<br>

但是要想调用类,必须要加载类文件,或者自动加载。

即便是引入了其中一个类,如果没有自动加载机制,还是会报错

use的几种用法

namespace Blog\Article;
class Comment { }

//创建一个BBS空间(我有打算开个论坛)
namespace BBS;

//导入一个命名空间
use Blog\Article;
//导入命名空间后可使用限定名称调用元素
$article_comment = new Article\Comment();

//为命名空间使用别名
use Blog\Article as Arte;
//使用别名代替空间名
$article_comment = new Arte\Comment();

//导入一个类
use Blog\Article\Comment;
//导入类后可使用非限定名称调用元素
$article_comment = new Comment();

//为类使用别名
use Blog\Article\Comment as Comt;
//使用别名代替空间名
$article_comment = new Comt();

1.第一种引入方式(前提是有了自动加载机制)

use OSS\OssClient; // 表示引入Class 'OSS\OssClient'

使用的时候,

$ossClient = <span class="hljs-keyword">new</span> OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);

或者这样

$ossClient = <span class="hljs-keyword">new</span> OssClient($accessKeyId, $accessKeySecret, $endpoint, false);

都可以!

2.第二种引入方式(前提是有了自动加载机制)

import('@.ORG.OSS.OssClient'); // thinkphp中的加载机制

使用的时候,只能

$ossClient = <span class="hljs-keyword">new</span> OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);  // 其中OSS是命名空间

thinkphp中有一种自动加载命名空间的机制,

框架Liberary目录下的命名空间都可以自动识别和定位,如下

Library 框架类库目录
│ ├─Think 核心Think类库包目录
│ ├─Org Org类库包目录
│ ├─ … 更多类库目录

所以,如果有命名空间,不需要引入文件也可以。
但是没有命名空间的类,如果不引入文件,就会报错。

import一下就可以了,

3.__autoload

这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数。看下面例子:

printit.class.php 

<?php 

class PRINTIT { 

 function doPrint() {
  echo 'hello world';
 }
}
?> 

index.php 

<?
function __autoload( $class ) {
 $file = $class . '.class.php';  
 if ( is_file($file) ) {  
  require_once($file);  
 }
} 

$obj = new PRINTIT();
$obj->doPrint();
?>

运行index.php后正常输出hello world。在index.php中,由于没有包含printit.class.php,在实例化printit时,自动调用__autoload函数,参数$class的值即为类名printit,此时printit.class.php就被引进来了。

4.spl_autoload_register
再看spl_autoload_register(),这个函数与__autoload有与曲同工之妙,看个简单的例子:


<?
function loadprint( $class ) {
 $file = $class . '.class.php';  
 if (is_file($file)) {  
  require_once($file);  
 } 
} 

spl_autoload_register( 'loadprint' ); 

$obj = new PRINTIT();
$obj->doPrint();
?>

将__autoload换成loadprint函数。但是loadprint不会像__autoload自动触发,这时spl_autoload_register()就起作用了,它告诉PHP碰到没有定义的类就执行loadprint()。

spl_autoload_register() 调用静态方法 ,


<? 

class test {
 public static function loadprint( $class ) {
  $file = $class . '.class.php';  
  if (is_file($file)) {  
   require_once($file);  
  } 
 }
} 

spl_autoload_register(  array('test','loadprint')  );
//另一种写法:spl_autoload_register(  "test::loadprint"  ); 

$obj = new PRINTIT();
$obj->doPrint();
?>

Android音频学习(八)——AudioFlinger线程 在 PlaybackThread 的实现中,Flag 用于标识线程的特殊行为或配置。 阅读详情

相关推荐

CoppeliaSim学习笔记(1):建立Python脚本与CoppeliaSim的连接

CoppeliaSim学习笔记,建立python和CoppeliaSim的连接,实现联调。

qq_22487889的博客 1万+

PHP中use的使用方法

最近一段时间在研究php框架,一直想的什么时候才能开发出自己的框架,当然这是为了提升自己的编程水平,同时能把平时学的零散的东西糅合在一块熟练应用。但是开发一个框架根本不知道如何做起,先开发什么,虽然php的框架也不少,但是都是如何应用,没有文档和视频可以学习,这是让我特别郁闷的事情,相信不少想自己开发框架玩的小伙伴都有类似的感受,郁闷归郁闷,自己还是动手做了,做的时候困难和想象的一样难,从一开始就有

yjreset的博客 2万+

AMEsim不连续处理机制:仿真精度与效率的平衡艺术

本文深入解析AMEsim不连续处理机制在系统仿真中的应用,探讨如何平衡仿真精度与效率。通过液压系统仿真案例,详细介绍了事件检测算法、变步长求解器自适应策略及典型场景优化方法,帮助工程师有效应对仿真中的不连续性问题,提升仿真效率和准确性。

v4w5x6的博客 440

php中用use,php中use的用法

在PHP中,如果命名空间字符串过长时,我们就使用use来相应的缩短命名空间。这也是use在PHP中的作用。下面我们就为大家介绍一下PHP中use的用法。推荐教程:PHP视频教程1、new类时,最前面无需用反斜杠。此外,use后没有as时,缩短的命名空间默认为最后一个反斜杠后的内容。namespace animal\dog;class Life{function __construct(){echo...

weixin_35715490的博客 556

关于Kswapd的理解(一)

关于Kswapd的理解(一) 之前跟踪了MemAvailable的计算方式,其中watermark的计算花了很多精力,在学习的过程中看到一些资料中说watermark是给swapd使用的,于是乎,研究一下看看咯 本部分主要记录两个方面: 对于kswapd这个东西,从初学者(我)的角度出发会考虑哪些内容? 跟踪kswapd 初始化结构部分; 1. KSwapd机制 上图是还没有跟踪kswapd code的时候,对自己提出的一些疑问和自身的理解,主要是如下内容: kswapd 机制用来做什么:内存不足时

And乔的博客 2713

黑马程序员Pink的javaScript课程APIday4

本文摘要:介绍了JavaScript中日期对象的实例化方法(有参/无参)及三种获取时间戳的方式。讲解了DOM节点操作,包括节点查找(父、子、兄弟节点)、增加/克隆/删除节点的方法。详细说明了移动端touch事件和Swiper插件的使用,包括自动播放和小圆点配置。最后提及学成在线案例中表单验证和取消默认跳转的实现。

JLY19970726的博客 825

「PHP系列」PHP7 新特性:use语句、intdiv() 函数、Session 选项

通过函数,你可以定义自己的会话处理程序来存储和检索会话数据。php// 自定义会话处理程序// 初始化代码,比如建立数据库连接等// 清理代码,比如关闭数据库连接等// 从你的存储机制中读取会话数据// 例如:从数据库、文件等中读取// 这里只是返回一个模拟值// 将会话数据写入你的存储机制// 例如:写入数据库、文件等// 这里只是模拟写入操作// 销毁会话数据// 从你的存储机制中删除会话数据// 这里只是返回一个模拟值// 垃圾回收,清理过期的会话数据。

日常笔记/总结/系列知识梳理 2093

Unity3D实战:5分钟搞定RTSP监控视频播放(附完整代码)

本文提供了一套在Unity3D中快速集成RTSP监控视频播放的实战方案。通过采用LibVLCSharp for Unity这一成熟稳定的跨平台中间件,开发者可以轻松实现RTSP流的解码与渲染,并附有完整的C#代码示例,帮助用户在5分钟内完成集成,适用于智慧园区、安防监控等3D可视化场景。

weixin_29001655的博客 191

php 类中use,php中的use有什么作用

php中的use的作用:引入命名空间下的文件,语法为:【use app\admin\model\LiveRecharge;】。use与【require_once】和【include】是不相同的,使用use的前提是文件已经包含进当前文件。php中use的作用是什么?PHP中的use、命名空间的理解看.Net中的命名空间和usingusing Ddd.Core;using Ddd.Core.Cachi...

weixin_28749363的博客 1891

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9914

保姆级教程:用Python和PyTorch复现PTB-XL心电信号分类论文(附完整代码)

本文提供了一份详细的PTB-XL心电信号分类教程,涵盖从数据预处理到模型优化的完整流程。通过PyTorch实现三种深度学习架构(Conv1D、SincNet和熵特征融合网络),并针对医疗AI特有的类别不平衡问题提供解决方案。教程包含可运行的代码示例,帮助开发者快速复现论文结果并应用于实际心电信号分析场景。

weixin_30555125的博客 405

php use关键字用法介绍

在PHP中,use关键字主要用于处理命名空间(namespaces)。PHP的命名空间功能自PHP 5.3版本开始引入,以解决类名、函数名或常量名的冲突问题。use关键字允许你在当前的命名空间中引入其他命名空间中的类、函数或常量,这样你就可以在不使用全限定类名(FQN)的情况下使用它们。

学亮编程手记 930

【软考高项论文】论信息系统项目管理的干系人绩效域

例如,在处理与电信运营商合作铺设光纤网络的问题时,考虑到其在通信设施建设和运维方面的专业性和重要性,我们将之定位为高权力高利益的干系人,给予了高度关注和优先沟通。项目全程,我们对干系人绩效域的执行效果进行了定期检查和评估,通过定量与定性的数据收集,确认了项目在干系人管理上的成效,具体表现为:建立了稳固的工作关系网络,使干系人普遍认可项目目标;鉴于本项目牵涉到政府各级部门、企事业单位、市民团体、技术研发伙伴等多种类型的干系人,且干系人的诉求和影响力各异,因此,有序且持续的干系人参与管理显得尤为关键。

Programming Talk 1681

php引入类文件大,PHP中的use、命名空间、引入类文件、自动加载类的理解

use只是使用了命名空间,但是要想调用类,必须要加载类文件,或者自动加载。即便是引入了其中一个类,如果没有自动加载机制,还是会报错use的几种用法namespace Blog\Article;class Comment { }//创建一个BBS空间(我有打算开个论坛)namespace BBS;//导入一个命名空间use Blog\Article;//导入命名空间后可使用限定名称调用元素$arti...

weixin_27146053的博客 343

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PHP类的自动加载与命名空间及use的理解

今天写一个demo,遇到一个问题,平时框架用多了,下意识的就以为use就能引入类,导致一直跑不成功,后来才意识到use与引用类并不是一回事。use只是指定了要使用哪个命名空间下的类,但是并不会引入类,类的引用还是需要使用include或require。这里记录一下这次事件的总结,加深一下印象。类的引用创建一个类文件ClassA.class.phpnamespace AreaA; class Clas

EFFORTS && VALUE 4508

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PHP中的命名空间与自动加载机制详解

命名空间是一种在PHP中封装标识符的机制,主要用于避免命名冲突。PHP 5.3引入了命名空间功能,它可以将类、函数和常量组合在一个逻辑上相关的组中。定义命名空间的基本语法如下:自动加载是一种机制,当使用未定义的类时,PHP会自动包含相应的文件,以便在运行时动态加载类。通过本指南,我们详细探讨了PHP中的命名空间与自动加载机制。您已经学习了命名空间的基本概念和使用方法,以及如何通过Composer实现自动加载。我们还展示了如何将代码部署到实际环境中。项目名称描述命名空间用于组织代码,避免命名冲突。

Y-starrydreamer的博客 1398

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

PHP自动加载autoload和命名空间 namespace 及导入 use 的用法

最近在研究别人项目的时候,看到了namespace 及use的使用,一头雾水,所以查了不少资料,做如下几个总结; 命名空间: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。 需要注意的是: 命名空间的命名方式需要和文件夹文件名称对应; 使用namespace的目的: 团队合作项目时,避免与团队其它成员新建的类发生冲突;个人...

weixin_41380972的博客 1782

你以为懂了use?90%开发者忽略的PHP命名空间陷阱

揭秘PHP 5.3命名空间use的常见误区,解决类名冲突与导入难题。详解use在不同作用域中的行为差异,掌握别名、全局类引用等技巧,提升代码组织效率。90%开发者忽略的细节,值得收藏。

VarIsle的博客 1094

php 命名空间 和 自动加载机制 的简单理解

namespace 只是创建并命名一个空间 use 只是导入一个命名空间 namespace 、use 和加载文件没有关联,和require、require_once、include、include_once没有关联 namespace 是为了 use ,use 是为了 自动加载机制;而namespace命名必须符合PSR4规范,即命名空间和文件路径要相对应

ltx06的专栏 3238

php命名空间与类传参有关系吗,PHP use类文件中的命名空间问题

PHP use类文件中的命名空间问题PHP的类文件在被其他文件include的时候不能直接使用其他文件中的已定义的别名。对于此你了解多少呢?下面是相关的知识,欢迎阅读。比如有三个文件。test.php 一个简单的脚本运行文件NameSpaceClass.php 一个类文件,定义了一个命名空间UseNameSpace.php,一个类文件,使用了NameSpaceClass命名空间里的类方法问题描述如...

weixin_34907135的博客 126

彻底理解modern-php命名空间:从基础概念到PSR-4自动加载实现

想要在PHP项目中高效组织代码并避免类名冲突吗?modern-php命名空间和PSR-4自动加载正是解决这些问题的终极方案!本文将为你提供一份完整的PHP命名空间指南,从基础概念到实际实现,帮助你快速掌握现代PHP开发的核心技能。🎯 ## 为什么需要PHP命名空间?🤔 在传统的PHP开发中,随着项目规模扩大,类名冲突成为一个常见问题。想象一下,两个不同的库都定义了`User`类或`Data

gitblog_00464的博客 1125

PHP命名空间

它提供了一种避免命名冲突的机制,特别是当多个开发者或多个代码库在同一个应用程序中使用相同的类名、函数名或常量名时。函数来注册自定义的自动加载函数。该函数接受一个回调函数作为参数,当 PHP 遇到未定义的类时,会调用该回调函数来加载类文件。自动加载能够根据类的命名约定自动找到并加载所需的类文件,提高了代码的可维护性和可扩展性。实际上,当你在 PHP 代码中没有显式指定命名空间时,会使用默认的全局命名空间,也称为全局作用域。全局作用域中的类、函数和常量可以在任何地方被访问和使用,不需要使用命名空间限定符。

代码炼金术 3478

php use自动加载,php 中namespace、use 、require 和自动加载

image.pngnamespace 防止重名首先,namespace就是为了解决项目中类的重名问题。 了解了目的后,就可以知道namespace的影响就 仅仅是限制在和类名相关的操作上。namespace后命名的定义不区分大小写。这就是要求我们在定义命名空间的时候要注意别定义了相同命名空间。以下就是等效的命名空间namespace one;namespace One;namespace ONE;...

weixin_42571280的博客 701

【php】命名空间 和 自动加载的关系

为什么80%的码农都做不了架构师?>>> ...

weixin_34161083的博客 211

深入浅出:PHP自动加载(Autoloading)的实用指南

自动加载是一种机制,它允许PHP在尝试实例化一个尚未加载的类时,自动查找并包含相应的类文件。这样做的好处是减少了对require或include语句的需求,并且提高了代码的可读性和维护性。通过本文的学习,你应该对PHP中的自动加载有了更深入的理解。了解这些基础知识不仅有助于编写功能性的代码,还能提高代码的安全性和性能。未来,你可以进一步探索更多高级主题,如设计模式、反射机制以及最佳实践等,从而成为一名更加专业的PHP开发者。

软件架构师笔记 1359

PHP:oop->细说命名空间/命名空间类的自动加载

PHP:oop->细说命名空间/命名空间类的自动加载 一.命名空间 命名空间:namespace 有名称的空间 namespace 需要写在脚本的顶部,必须是php的第一条指令(除了declare指令) 全局成员: 常量,函数,类(接口),默认声明在全局空间中的 优点:全局调用 缺点:不能重复命名 php5.3以后引入C Java中应用成熟的命名空间 use 在命名空间中的作用/导入命名空间 use app\admin\controller as app; 引入别的

ZzzWClock的博客 251
上一篇: mysql查询语句 和 多表关联查询 以及 子查询
下一篇: PHP不借助第三个变量交换值
Dshaw
博客等级 码龄10年 112粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值