__autoload()不执行的解决办法spl_autoload_register();

2023-10-29

在php5之后已经有了类的自动加载机制,可以定义__autoload函数,在使用到某个未定义的类,执行php会出错,但是在此时php引擎在返回失败之前会去check下是否有定义__autoload去加载需要的类。
但是,今天晚上__autoload()这个函数却折磨了我两个小时,function方法进不去,至今没有找到合理的解释。无奈之下只好用spl_autoload_register(); 
经过搜索资料,可能是应为我用的smarty版本高,没有拿低版本的试验。下面说一下__autoload的弊端:


一个项目中只能定义一个__autoload,假如说当项目中引用了第三方文件时,刚好第三方文件中也使用__autoload;或者项目成员多的时候,定义了不同的 __autoload; 此时就会出错,因为__autoload函数拥有全局域,php也支不支持函数重载,只能将几个__autoload合并成一个。
于是就有了更加灵活的spl_autoload_register()的自动加载机制,php官方也建议不要使用__autoload而使用spl_autoload_register()。

既然__autoload()方法兼容性这么差,那就果断放弃,使用更好用spl_autoload_register()好了; 


let's go!!!

比如我需要自动加载根目录下action目录下的 *Action.class.php 文件,如下:


1、先写一个init.php;如下

<?php
header('Content-type:text/html;charset=utf-8');
define('ROOT_PATH',dirname(__FILE__));
//写一个autoloadHandler方法
function autoloadHandler($_className){
if(substr($_className, -6)=='Action'){
echo $_className;      //输出类名
require ROOT_PATH.'/action/'.$_className.'.class.php';
}
}
//将autoloadHandler注册为自动加载
spl_autoload_register('autoloadHandler');


?>

2、然后在需要的地方引入init.php,比如:

    <?php 
require 'init.php';
  new ManageAction();
    ?>

3、程序执行后结果

Action.class.php被引入

输出ManageAction


OVER


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__autoload()不执行的解决办法spl_autoload_register(); 的相关文章

  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 使用 MID、LEN 和 FIND 函数提取单元格文本的某些部分?

    我有一份 Excel 作业 但我陷入了最后部分 我被要求使用 MID LEN 和 FIND 来提取单元格内的特定字符串 我非常了解每个人的工作方式 将这三者结合起来并让它们发挥作用是我遇到的问题 我需要将城市与地址的其余部分分开 然后将其显
  • PHP - 扩展 __construct

    我想知道你是否可以帮助我 我有两个类 一个扩展了另一个 B 类将由各种不同的对象扩展 并用于常见的数据库交互 现在我希望 B 类能够处理其连接和断开连接 而无需来自 A 类或任何外部输入的指示 据我了解 问题是扩展类不会自动运行其 cons
  • 包含包含文件的 php 文件

    这是目录结构 global php includes class bootstrap php includes init php plugins myplugin php 这是这些文件中的代码 start php require inclu
  • 如何将粘在一起的单词分开?

    我有很多命名不好的文件 videoofmegoingtoschool avi 是否有一个库或某种算法可以正确地将其分离 video of me going to school avi 我不认为那里有什么 我可以想象一个程序 它使用单词词典并
  • JavaScript 中带前导零的数字发生变化

    我使用 print 语句从 php 调用 javascript 函数来打印 html 代码 并且传入一个整数 但是 在 php 中传递的值与 javascript 函数接收到的数字不匹配 我不知道为什么 这是调用 javascript 函数
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • 在 null laravel 上调用成员函数 save()

    大家好 我正在使用 laravel 5 多态关系将数据保存在数据库中 但我遇到了一些问题 当我尝试将数据保存在数据库中时 它会抛出此错误 对 null 调用成员函数 save 我不知道为什么我会遇到这个错误 我正在关注多态关系的本教程在 L
  • 如何在 Smarty 中打印 json

    我从 api 获取 json 如何使用 Smarty 打印 json Json格式 first name jinu last name mk loginid email protected cdn cgi l email protectio
  • phpinfo 说 php.ini 路径是 C:\Windows 但那里没有 php.ini

    我们正在尝试从 PHP5 切换到 PHP7 现在我们已经安装了 Apache 并且 PHP 可以运行了 然而 我们在php ini文件没有任何作用 Via phpinfo 我们意识到原因是Configuration File php ini
  • PHP:在脚本完成之前获取输出

    我有一个名为 data php 的脚本 如下所示 do some stuff echo result do some other stuff eg database operations 我需要在另一个脚本中使用 data php 的输出
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 检查对以下内容的理解:“变量”与“变量” “价值”、“功能”与“抽象”

    这个问题是后续问题this one https stackoverflow com questions 25327705 is function a sort of variable 25329157 25329157在学习 Haskell
  • HTML 代码中的 PHP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我用 HTML 代码编写了 PHP div div 但这出现在输出页面中 else print 我怎样才能让PHP执行 你的文件有一个 p
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records

随机推荐

  • 轻松应对IDC机房带宽突然暴涨问题

    轻松应对IDC机房带宽突然暴涨问题 1 提出问题 实际案例一 凌晨3 00点某公司 网站业务 的一个IDC机房带宽流量突然从平时高峰期150M猛增至1000M 如下图 该故障的影响 直接导致数百台服务器无法连接 该机房全部业务中断 实际案例
  • [深度学习实战]基于PyTorch的深度学习实战(下)

    目录 一 前言 二 Mnist手写数字图像识别 2 1 加载数据 2 1 1 下载地址 2 1 2 用 numpy 读取 mnist npz 2 2 定义卷积模型 2 3 开始训练 2 4 完整代码 2 5 验证结果 2 6 修改参数 三
  • vue项目中的路由配置

    公司的项目使用vue脚手架来搭建 是属于后台管理系统 功能页比较多 就使用vue路由来进行跳转 个人比较习惯上面这种方式放置路由文件 并且使用懒加载的模式来配置 如下 import Vue from vue import Router fr
  • qemu 出现Could not access KVM kernel module: No such file or directory failed to initialize KVM: No su...

    使用qemu命令 qemu system x86 64 hda image ubuntu test img cdrom ubuntu 16 04 2 server amd64 iso m 1024 enable kvm boot d 安装u
  • Android终端Termux安装MariaDB/MySQL数据库

    前言 Android移动设备并非设计为服务器 尽管其中一些功能强大 但是 随着技术的进步以及我们可以用手机做更多的事情 总是很有趣的 今天 借助Termux应用程序 我们将了解如何在Android上安装MySQL或MariaDB数据库 为此
  • Linux常用命令学习

    原文转自https www cnblogs com gaojun p 3359355 html 1 ls命令 就是list的缩写 通过ls 命令不仅可以查看linux文件夹包含的文件 而且可以查看文件权限 包括目录 文件夹 文件权限 查看目
  • unity学习-委托(delegate),事件(event),Action,Func

    unity学习 委托 含义 定义 使用 事件 含义 使用 在进行项目的过程中 一直存在着对代码管理不当的问题 所以需要学习一些科学的代码思维 减少后期功能的修改与迭代引发的代码冗杂和内存爆炸 可以看b站这个大神的视频 讲的可以说无敌详细了
  • echarts问题记录

    X轴最后一个刻度标签加粗 问题描述 如图最后一个刻度标签加粗 解决 是因为加了interval 0导致 这个属性又不能去掉 查看文档发现可以使用function 改为interval gt true axisLabel interval g
  • ros下src中的CMakeLists.txt解析

    toplevel CMakeLists txt for a catkin workspace catkin cmake toplevel cmake src下的CMakeLists txt是由toplevel生成的 cmake minimu
  • makefile报错makefile:7: *** missing separator. Stop.

    解决方案 打开vim vimrc 添加 autocmd FileType make set noexpandtab
  • RabbitMQ启动后无法访问http://localhost:15672等问题

    今天重启电脑后遇到了这个问题 rabbitmq服务启动后无法访问localhost 15672 同时项目也无法连接rabbitmq服务 研究了半天终于解决了 下面整理一下解决过程留作备份以及给同样遇到这个问题的人做一个参考 1 找到rabb
  • 代码例子区全区搜索索引(27th Feb 2011 Updated)

    如果以下的链接有错误 或者存在其他问题 请给我发站内短信 或者发送邮件至nono cocoa gmail com希望该帖对大家有帮助 IOS 类代码 我自己做的翻书效果 小猫咪再次登场 2011 03 02 如何实现QQLive HD界面
  • IDEA快速提取maven项目依赖版本号

    操作步骤 提取版本号 1 在pom xml文件中选中需要提取的版本号 2 键入快捷键 ctrl alt v 3 在弹出窗口中设定Name和Project Name为版本号的变量名 Project表示变量提取后存放位置 即放到哪个项目的pom
  • php mysql ajax搜索提示键盘_php+ajax做仿百度搜索下拉自动提示框(有实例)

    php mysql ajax实现百度搜索下拉提示框 主要有3个文件三个文件在同一个目录里 如下图 下面是三个文件的代码 把sql文件导入到mysql数据库里 修改下数据库密码为自己的 记得哦是UTF 8编码 php mysql ajax实现
  • 使用tailwind+next.js写一个github页面进行学习

    目的是学习tailwind语法 如果你也想照着敲可以参考这个视频 点击即刻跳转 仓库地址 点击即刻跳转 不想重复的创建仓库 我的所有内容都在该仓库 只是会通过创建分支来写项目 写的过程发现之前的一些疏忽吧 jsx后缀的尽量就不要写成js后缀
  • CoreDNS篇8-健康检查

    本文主要讲解介绍CoreDNS内置的两个健康检查插件health和ready的使用方式和适用场景 1 health插件 health插件默认情况下会在8080端口的 health路径下提供健康状态查询服务 当CoreDNS服务正常的时候 会
  • win10环境变量设置

    在装一些软件的时候 经常需要设置环境变量 但win10与win7有一些不同 1 打开文件资源管理器 2 最左边一列有 此电脑 点击 3 界面最上面一列会有 属性 点击 4 左边 高级系统设置 点击 5 环境变量 点击 有一个注意的地方是一般
  • VBA解析JSON

    前言 vba作为一种古老的语言 是不能直接处理json数据的 但是好在可以加载其他语言的执行引擎 间接的达到解析JSON的目的 示例代码 Public Function JsonParse jsonStr As String As Obje
  • 三输入或门(发现这个玩意很不好耍,编程出现错误,不知道哪里出现的,一不小心2输成3也无法查证)...

    1 timescale 1ns 1ps 2 module or3 3 x1 4 x2 5 x3 6 z1 7 8 input x1 x2 x3 9 output z1 10 11 wire x1 x2 x3 12 reg z1 13 alw
  • __autoload()不执行的解决办法spl_autoload_register();

    在php5之后已经有了类的自动加载机制 可以定义 autoload函数 在使用到某个未定义的类 执行php会出错 但是在此时php引擎在返回失败之前会去check下是否有定义 autoload去加载需要的类 但是 今天晚上 autoload