php类的自动加载操作实例详解
本文实例讲述了php类的自动加载操作。分享给大家供大家参考,具体如下:
类的自动加载
在外面的页面中,并不需要去引入类文件,但程序会在需要一个类的时候自动去“动态加载”该类。
① 创建一个对象的时候new
② 直接使用一个类名(操作静态属性与方法)
使用__autoload魔术函数
当出现两种情况时候,就会调用该函数,该函数需要我们预先定义,在其中写好加载类文件的通用语句
function __autoload($name){ require './lib/'.$name.'.class.php'; }
使用spl_autoload_register()
用它注册(声明)多个可以代替__autoload()作用的函数,自然也得去定义这些函数,并且函数的作用跟__autoload()作用一样,不过此时可以应对更多的情形
//注册用于自动加载的函数 spl_autoload_register("model"); spl_autoload_register("controll"); //分别定义两个函数 function model($name){ $file = './model/'.$name.'.class.php'; if(file_exists($file)){ require './model/'.$name.'.class.php'; } } //如果需要一个类,但当前页面还没加载该类 //就会依次调用model()和controll(),直到找到该类文件加载,否则就报错 function controll($name){ $file = './controll/'.$name.'.class.php'; if(file_exists($file)){ require './controll/'.$name.'.class.php'; } }
//若注册的是方法而不是函数,则需要使用数组 spl_autoload_register( //非静态方法 array($this,'model'), //静态方法 array(__CLASS__,'controller') );
项目场景应用
//自动加载 //控制器类 模型类 核心类 //对于所有的类分为可以确定的类以及可以扩展的类 spl_autoload_register('autoLoad'); //先处理确定的框架核心类 function autoLoad($name){ //类名与类文件映射数组 $framework_class_list = array( 'mySqldb' => './framework/mySqldb.class.php' ); if(isset($framework_class_list[$name])){ require $framework_class_list[$name]; }elseif(substr($name,-10)=='Controller'){ require './application/'.PLATFORM.'/controller/'.$name.'.class.php'; }elseif(substr($name,-6)=='Modele'){ require './application/'.PLATFORM.'/modele/'.$name.'.class.php'; } }
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
在进行PHP编程时,需要对服务器某个目录下面的文件进行浏览,通常成为遍历目录.取得一个目录下的文件和子目录,就需要用到opendir()函数.readdir()函数.closedir()函数和rewinddir()函数. ①函数opendir() 函数opendir()用于打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为可供其他目录函数使用的目录句柄(资源类型).如果该目录不存在或者没有访问权限,则返回FALSE. ②函数readdir() 函数readdir()用于读取指定目录,
-
php opendir()列出目录下所有文件的实例代码
php opendir()函数用于打开目录,通常与readdir()和closedir()函数一起用来读取目录下所有文件(即遍历目录),本文章向大家介绍php使用opendir()函数列出目录下所有文件的实例. 实例一: 使用opendir()列出目录下所有文件 <?php $dr = @opendir('/tmp/'); if(!$dr) { echo "Error opening the /tmp/ directory!<BR>"; exit; } while((
-
分享一个漂亮的php验证码类
本文实例为大家分享了一个漂亮的php验证码类,供大家参考,具体内容如下 //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验证码长度 private $width = 130;//宽度 private $height = 50;//高度 privat
-
PHP的Json中文处理解决方案
本文讲述了PHP的Json中文处理解决方案.分享给大家供大家参考,具体如下: Json是现在被广泛使用的用于传递字符串的格式,相比xml更显得简单易懂以及更方便操作,php下就俩个函数,json_encode() AND json_deconde().不过json对中文的支持并不是很好,如果使用json_encode()处理如数组,数组中若存在中文,则会作空白处理. 解决中文的一种方法就是先将中文转换为另一种编码格式,然后再使用json_encode(),最后再用解码把json串进行解码.还有一
-
PHP 闭包详解及实例代码
闭包和匿名函数在PHP5.3.0中引入的. 闭包是指:创建时封装周围状态的函数.即使闭包所处的环境不存在了,闭包中封装的状态依然存在. 理论上,闭包和匿名函数是不同的概念.但是PHP将其视作相同概念. 实际上,闭包和匿名函数是伪装成函数的对象.他们是Closure类的实例. 闭包和字符串.整数一样,是一等值类型. 创建闭包 <?php $clousre = function ($name) { return 'Hello ' . $name; }; echo $closure('nesfo');
-
PHP快速排序quicksort实例详解
本文实例讲述了PHP快速排序quicksort.分享给大家供大家参考,具体如下: quicksort 在快速排序算法中,使用了分治策略.首先把序列分成两个子序列,递归地对子序列进行排序,直到整个序列排序结束.(即一分为二的思想) 步骤如下: 在序列中选择一个关键元素做为轴: 对序列进行重新排序,将比轴小的元素移到轴的前边,比轴大的元素移动到轴的后面.在进行划分之后,轴便在它最终的位置上: 递归地对两个子序列进行重新排序:含有较小元素的子序列和含有较大元素的子序列. 比如序列$arr: 5 3 0
-
PHP实现QQ快速登录的方法
前言: PHP实现QQ快速登录,罗列了三种方法 方法一:面向过程,回调地址和首次触发登录写到了一个方法页面[因为有了if做判断], 方法二,三:面向对象 1.先调用登录方法,向腾讯发送请求, 2.腾讯携带本网站唯一对应参数OPENID,ACCESSTOKEN,返回到对应回调页面, 3.回调页面接受到腾讯的参数后,通过这个两个参数,再发出对应的请求,如查询用户的数据. 4.腾讯做出对应的操作,如返回这个用户的数据给你 即使你没看懂,也没关系,按照我下面的流程来,保证你可以实现. 前期准备: 使用人
-
PHP二分查找算法示例【递归与非递归方法】
本文实例讲述了PHP二分查找算法.分享给大家供大家参考,具体如下: binarySearch 二分查找采用的方法比较容易理解,以数组为例: ① 先取数组中间的值floor((low+top)/2), ② 然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作:若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作 ③ 重复第二步操作直至找出目标数字 比如从1,3,9,23,54 中查找数字23, 首位置为0, 尾位置为4,中间位置就为2 值为9
-
PHP类相关知识点实例总结
本文实例总结了PHP类相关知识点.分享给大家供大家参考,具体如下: 最终类与最终方法 如果父类中的方法被声明为 final,则子类无法覆盖该方法.如果一个类被声明为 final,则不能被继承. final class a{} class a{ final public function A(){} } 抽象类与抽象方法 abstract class a { public abstract function func(); } class A extends a{ public function
-
php类的自动加载操作实例详解
本文实例讲述了php类的自动加载操作.分享给大家供大家参考,具体如下: 类的自动加载 在外面的页面中,并不需要去引入类文件,但程序会在需要一个类的时候自动去"动态加载"该类. ① 创建一个对象的时候new ② 直接使用一个类名(操作静态属性与方法) 使用__autoload魔术函数 当出现两种情况时候,就会调用该函数,该函数需要我们预先定义,在其中写好加载类文件的通用语句 function __autoload($name){ require './lib/'.$name.'.clas
-
php自动加载代码实例详解
1. 让我们为 PHP 创建枚举,提供一些代码示例 如果我们的代码需要对枚举常量和值进行更多验证,该怎么办? 根据使用情况,我通常会使用类似以下的简单内容: abstract class DaysOfWeek { const Sunday = 0; const Monday = 1; // etc. } $today = DaysOfWeek::Sunday; 这是一个扩展的示例,可以更好地服务于更广泛的案例: abstract class BasicEnum { private static
-
PHP自动加载机制实例详解
本文实例讲述了PHP自动加载机制.分享给大家供大家参考,具体如下: 在php中,我们一般使用 require, requre_once, include, include_once 这四个命令来加载其他php文件,这在一般小型的php文件中是没有任何问题的,相信每个初学者都会遇到这样的应用场景:使用一个 Db.php 来定义数据库连接,在其他文件中直接引用这个文件,达到代码复用的效果. 再让我们考虑这样一个应用场景,如果我们使用一个框架,或者一个第三方包,里面一般有成百上千个类文件,而我们通常是
-
SpringBoot配置文件的加载位置实例详解
springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正常运行.在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性. SpringBoot启动会扫描以下位置的application.yml或者 application.properties文件作为SpringBoot的默认配置文件. -file:./config/ -file:./
-
web.xml中如何设置配置文件的加载路径实例详解
web.xml中如何设置配置文件的加载路径实例详解 web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志.数据库.spring的文件等都在此时被加载,下面是两种常用的配置文件加载路径,即配置文件可以放到 SRC目录下或者可以放到WEB-INF根目录下 第一种在web.xml中这样配置: <context-param> <param-name >contextConfigLocation </param-name >
-
mui上拉加载功能实例详解
最近在做移动端的项目,用到了mui的上拉加载,整理如下: 1.需要引入的css.js <link rel="stylesheet" href="common/mui/css/mui.min.css" rel="external nofollow" > <script src="js/jquery-3.2.0.min.js"></script> <script src="com
-
Swift 开发之懒加载的实例详解
Swift 开发之懒加载的实例详解 /// A display link that keeps calling the `updateFrame` method on every screen refresh. private lazy var displayLink: CADisplayLink = { self.isDisplayLinkInitialized = true let displayLink = CADisplayLink(target: TargetProxy(target:
-
webpack学习笔记之代码分割和按需加载的实例详解
本文介绍了webpack学习笔记之代码分割和按需加载的实例详解,分享给大家,也给自己留个笔记 为什么需要代码分割和按需加载 代码分割就是我们根据实际业务需求将代码进行分割,然后在合适的时候在将其加载进入文档中. 举个简单的例子: 1.一个HTML中存在一个按钮 2.点击按钮出现一个包着图片的div 3.点击关闭按钮图片消失 Demo目录: 一.当未点击按钮时浏览器只加载了对入口文件打包后的js 二.点击按钮会对组件进行异步加载 这个clichunk就是我们打包好的click组件,包括相应的JS逻
-
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
本文实例讲述了PHP从零开始打造自己的MVC框架之类的自动加载实现方法.分享给大家供大家参考,具体如下: 前面介绍了MVC框架的入口文件,接下来我们希望完成一个"自动加载类"的功能,我们把这个功能放到Imooc这个基础类当中. core\imooc.php: <?php namespace core; class Imooc { public static $classMap = array(); static public function run() { p('ok'); $
-
Android编程动态加载布局实例详解【附demo源码】
本文实例讲述了Android编程动态加载布局的方法.分享给大家供大家参考,具体如下: 由于前段时间项目需要,需要在一个页面上加载根据不同的按钮加载不同的布局页面,当时想到用 tabhot .不过美工提供的界面图完全用不上tabhot ,所以想到了动态加载的方法来解决这一需求.在这里我整理了一下,写了一个 DEMO 希望大家以后少走点弯路. 首先,我们先把界面的框架图画出来,示意图如下: 中间白色部门是一个线性布局文件,我喜欢在画图的时候用不同的颜色将一块布局标示出来,方便查看.布局文件代码如下:
随机推荐
- java 代码块与静态代码块加载顺序
- JavaScript 动态创建VML的方法
- 更快的异步执行(setTimeout多浏览器)
- asp.net 备份和恢复数据库的方法示例
- asp.net(C#)生成无限级别菜单
- C#实现窗体淡入淡出效果的方法总结
- linux下命令行操作快捷键及技巧(分享)
- jQuery中select与datalist制作下拉菜单时的区别浅析
- jquery实现上下左右滑动的方法
- Javascript学习笔记2 函数
- 原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
- JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
- 服务器端的JavaScript脚本 Node.js 使用入门
- 分享10个很棒的学习Android开发的网站
- Android 中通过实现线程更新Progressdialog (对话进度条)
- javascript消除window.close()的提示窗口
- Javascript实现获取窗口的大小和位置代码分享
- C#中使用基数排序算法对字符串进行排序的示例
- VUE安装使用教程详解
- python导包的几种方法(自定义包的生成以及导入详解)