首页
学习
活动
专区
圈层
工具
发布

php学习之类与对象的类的自动加载的使用

当我们在一个文件中使用多个类,就会用到类的自动加载,在开发中,一个类对应一个文件,命名方式为类名.class.php,通过include或require引入 当使用一个未定义的类时,就会自动触发__autoload...2.对代码优化,使用类的自动加载 ? 3.对代码进一步优化,更灵活 创建一个common.php文件,把类名和路径的映射关系数组定义好 ? php'; //类的自动加载完成 /* @function 完成类的自动加载 @param $class_name 是类的名称 @说明:当使用一个未定义的类时,就会自动触发__autoload...$class_name.'.class.php'; // } //不同的文件夹下的类,进行自动加载 require '....> 4.使用spl_autoload_register 高级方式完成类的自动加载 spl_autoload_register可以灵活的注册自己的自动加载函数,就是可以自定义自动加载函数 案例: ?

67810

【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )

文章目录 一、类加载初始化时机 二、常量加载示例 三、数组加载示例 一、类加载初始化时机 ---- 类加载时机 : Java 程序执行时 , 并不是一开始将所有的字节码文件都加载到内存中 , 而是用到时才进行加载...main 函数的类 , 会默认自动加载 ; 调用子类 , 如果之前没有加载过父类 , 则 自动加载父类 ; 访问 类 的 静态变量 有些类加载操作 , 不需要执行 加载 -> 连接 ( 验证 , 准备...加载 -> 连接 ( 验证 , 准备 , 解析 ) 阶段 , 就可以完成常量池的初始化 , 即使没有执行 初始化 这个步骤 , 也不影响使用类中的常量值 ; 在 连接 的 准备 阶段 , 为 普通 的...; 二、常量加载示例 ---- 类加载时 , 如果只用到了类中的常量 , 则只进行 " 加载 -> 连接 ( 验证 , 准备 , 解析 ) " 两个过程 : public class Student...: 上述 Student 类中的 静态代码块 没有被执行 , 说明 类加载 的流程中 , " 初始化 " 步骤 , 没有被执行 ; 找到 Student.class 字节码文件 , 然后使用 javap

4.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    springboot系列学习(七)JSR303数据校验 , 注解不能使用爆红的解决方法,后端自动的校验实体类的值是不是合法的,

    我们之前在前端,会校验我们输入的值是不是合法的,比如email,如果不是email格式那么就报错。这个是前段 的验证规则,其实后端也是可以的。... 6.0.17.Final compile 这样就可以在项目中使用...开启之后,我们可以使用的注解有什么呢?...空检查 @Null 验证对象是否为null @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,...数值检查 建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为“”时无法转换为int,但可以转换为Stirng为”“,Integer为null @Min 验证 Number

    1.4K30

    PHP5中的魔术方法

    一、 __construct(),类的构造函数 php中构造方法是对象创建完成后第一个被对象自动调用的方法。...2、 析构方法的作用 一般来说,析构方法在PHP中并不是很常用,它属类中可选择的一部分,通常用来完成一些在对象销毁前的清理任务。 举例演示,如下: 自动调用的 1当在类外部使用unset()函数来删除私有成员时自动调用的 九、 __sleep(),执行serialize()时,先会调用这个函数 serialize() 函数会检查类中是否存在一个魔术方法...注意: 本特性只在 PHP 5.3.0 及以上版本有效。 直接上代码: 的效率如何,我们分析下: 当php引擎第一次使用类A,但是找不到时,会自动调用 __autoload 方法,并将类名“A”作为参数传入。

    3.1K10

    PHP之十六个魔术方法详解

    2、 析构方法的作用 一般来说,析构方法在PHP中并不是很常用,它属类中可选择的一部分,通常用来完成一些在对象销毁前的清理任务。 举例演示,如下: 的外部使用isset()函数来测定私有成员属性是否被设定了呢?当然是可以的,但不是一成不变。...1当在类外部使用unset()函数来删除私有成员时自动调用的 1 九、 __sleep(),执行serialize()时,先会调用这个函数 serialize() 函数会检查类中是否存在一个魔术方法...注意: 本特性只在 PHP 5.3.0 及以上版本有效。 直接上代码: 的效率如何,我们分析下: 当php引擎第一次使用类A,但是找不到时,会自动调用 __autoload 方法,并将类名“A”作为参数传入。

    1.8K41

    PSR-各个框架遵循的统一编码规范现代PHPer的开发规范

    php ?> 长标签 或 短输出标签; 一定不可 使用其它自定义标签。 这点相信很多 PHPer 都很容易遵守,而且在现实撸代码中一般都是采用正常的php ?...),但 不能 同时做两件事 这里副作用的意思是:仅通过包含文件,不直接声明类、函数和常量等,而执行的逻辑操作,这个规定的意思差不多就是一个变量、方法或者一个类,只能相应完成一个操作、做一件事情,也就是我们平时撸码的时候...4 是由文件路径自动载入对应类的相关规范,比如我们的Composer,PSR-4 推荐规范不要求改变代码的实现方式,只建议如何使用文件系统目录结构和 PHP 命名空间组织代码。...PSR-4**依赖**PHP 命名空间和文件系统目录结构查找并加载 PHP 类、性状和接口 为什么自动加载器很重要 举一个很常见的场景,平时我们开始的时候如果不是用框架,想要一个验证码,就要先去 Gihutb...这样既不方便,又不美观,所以 PHP-FIG 在此基础上考虑,规范了一个统一的自动加载器策略 如何使用自动加载器 建议使用依赖管理器Composer自动生成的 PSR-4 自动加载器,而且现在的 PHP

    1.3K20

    【黄啊码】这篇文章告诉你php的魔术方法有多方便

    PHP 中的魔术方法如下表所示: 魔术方法 作用 __construct() 实例化类时自动调用 __destruct() 类对象使用结束时自动调用 __set() 在给未定义的属性赋值时自动调用 __...2、 析构方法的作用 一般来说,析构方法在PHP中并不是很常用,它属类中可选择的一部分,通常用来完成一些在对象销毁前的清理任务。     举例演示,如下: 自动调用的 1当在类外部使用unset()函数来删除私有成员时自动调用的 1 九、 __sleep(),执行serialize()时,先会调用这个函数 serialize()...注意: 本特性只在 PHP 5.3.0 及以上版本有效。     直接上代码: 的效率如何,我们分析下:     当php引擎第一次使用类A,但是找不到时,会自动调用 __autoload 方法,并将类名“A”作为参数传入。

    1.1K20

    【黄啊码】用PHP7性能居然是5.6的三倍?赶紧看看它有什么新特性

    > 简单来说就是比如:你在做数字计算时,这里的字符串3会自动帮你强制转换成数字3,然后再次计算 ,又因为我们声明了这是整数类型,所以9.1会自动转换成9 那什么是严格类型?...这玩意看上去是不是特别熟悉,学习过java或者.net的应该特别清楚吧,就是我啥都不用返回,而在php7中返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return...> 输出:黄啊码 PHP 匿名类 PHP 7 支持通过 new class 来实例化一个匿名类,这可以用来替代一些"用后即焚"的完整类定义。...匿名类可以直接定义给变量,可以在方法中使用return返回,也可以当做参数传递给方法内部。其实,匿名类就像一个没有事先定义的类,而在定义的时候直接就进行了实例化。...> 输出结果分别为:1 1 有网友说,php都到8了,为什么你还跟我说php7,我想问,php都到8了,为什么你写代码还用5呢?所以不是新的不好,而是老的稳定,毕竟姜还是老的辣。

    19510

    PHP自动加载与composer自动加载

    php require "A1.php"; // 引入Siam空间下的A类文件 require "A1.php"; // 引入根空间下的A类文件 use Siam\A; // 已经声明程序中使用的是Siam...php require "A1.php"; // 引入Siam空间下的A类文件 require "A1.php"; // 引入根空间下的A类文件 use Siam\A AS S_A; // 已经声明程序中使用的是...Siam空间下的A类,并且升值一个别名 $A1 = new S_A(); // 输出 这是在Siam空间下的A类 new A(); // 当前运行脚本没有声明namespace 所以是根空间...写的类名也不是完整类名,所以调用当前空间下的类 // 输出 这是在根空间下的A类 $A2 = new \A(); // 通过完整的类名,来调用根空间下的类 // 输出 这是在根空间下的A类...(目前是第四个版本,更详细的资料可以通过其他方式了解) PSR-4规范不要求改变代码的实现方式,只建议如何使用文件系统目录结构和PHP命名空间组织代码,PSR-4规范以来PHP命名空间和文件系统目录结构查找并加载

    2.8K10

    PHP自动加载与composer自动加载

    php require "A1.php"; // 引入Siam空间下的A类文件 require "A1.php"; // 引入根空间下的A类文件 use Siam\A; // 已经声明程序中使用的是...php require "A1.php"; // 引入Siam空间下的A类文件 require "A1.php"; // 引入根空间下的A类文件 use Siam\A AS S_A; // 已经声明程序中使用的是...Siam空间下的A类,并且升值一个别名 $A1 = new S_A(); // 输出 这是在Siam空间下的A类 new A(); // 当前运行脚本没有声明namespace 所以是根空间...写的类名也不是完整类名,所以调用当前空间下的类 // 输出 这是在根空间下的A类 $A2 = new \A(); // 通过完整的类名,来调用根空间下的类 // 输出 这是在根空间下的...(目前是第四个版本,更详细的资料可以通过其他方式了解) PSR-4规范不要求改变代码的实现方式,只建议如何使用文件系统目录结构和PHP命名空间组织代码,PSR-4规范以来PHP命名空间和文件系统目录结构查找并加载

    3.2K20

    PHP自动加载与composer自动加载

    ,我们还可以提前声明,出现的所有名字为A的类,都是使用某个命名空间下的。...php require "A1.php"; // 引入Siam空间下的A类文件 require "A1.php"; // 引入根空间下的A类文件 use Siam\A;  // 已经声明程序中使用的是Siam...Siam空间下的A类,并且升值一个别名 $A1 = new S_A();  // 输出   这是在Siam空间下的A类 new A();  // 当前运行脚本没有声明namespace  所以是根空间  ...写的类名也不是完整类名,所以调用当前空间下的类   // 输出   这是在根空间下的A类 $A2 = new \A(); // 通过完整的类名,来调用根空间下的类 // 输出   这是在根空间下的A类...方法 A被实例化了 至此就完成了一个简单的自动加载器的声明。

    2.8K10

    【黄啊码】用PHP7性能居然是5.6的三倍?赶紧看看它有什么新特性

    > 简单来说就是比如:你在做数字计算时,这里的字符串3会自动帮你强制转换成数字3,然后再次计算 ,又因为我们声明了这是整数类型,所以9.1会自动转换成9 那什么是严格类型?...这玩意看上去是不是特别熟悉,学习过java或者.net的应该特别清楚吧,就是我啥都不用返回,而在php7中返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return...> 输出:黄啊码 PHP 匿名类  PHP 7 支持通过 new class 来实例化一个匿名类,这可以用来替代一些"用后即焚"的完整类定义。...匿名类可以直接定义给变量,可以在方法中使用return返回,也可以当做参数传递给方法内部。其实,匿名类就像一个没有事先定义的类,而在定义的时候直接就进行了实例化。...> 输出结果分别为:1    1  有网友说,php都到8了,为什么你还跟我说php7,我想问,php都到8了,为什么你写代码还用5呢?所以不是新的不好,而是老的稳定,毕竟姜还是老的辣。

    1.4K40

    48 条高效率的 PHP 优化写法

    此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。...3.5 用子类方法 基类里面只放能重用的方法,其他功能尽量放在子类中实现,子类里方法的性能优于在基类中。 3.6 类的性能和其方法数量没有关系 新添加10个或多个方法到测试的类后,性能没什么差异。...3.9 方法不要细分得过多 仔细想想你真正打算重用的是哪些代码? 3.10 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。...这和声明相同数量的局部变量一样,PHP可能去检查这个全局变量是否存在。 4.8 使用++$i递增 当执行变量$i的递增或递减时,$i++会比++$i慢一些。...4.11 一定要对变量进行初始化 这里的“初始化”指的是“声明”。 当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一个好主意。

    1.1K30

    48 条高效率的 PHP 优化写法

    此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。...3.5 用子类方法 基类里面只放能重用的方法,其他功能尽量放在子类中实现,子类里方法的性能优于在基类中。 3.6 类的性能和其方法数量没有关系 新添加10个或多个方法到测试的类后,性能没什么差异。...3.9 方法不要细分得过多 仔细想想你真正打算重用的是哪些代码? 3.10 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。...这和声明相同数量的局部变量一样,PHP可能去检查这个全局变量是否存在。 4.8 使用++$i递增 当执行变量$i的递增或递减时,$i++会比++$i慢一些。...4.11 一定要对变量进行初始化 这里的“初始化”指的是“声明”。 当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一个好主意。

    1.2K40

    48条高效率的PHP优化写法

    此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。...3.5 用子类方法 基类里面只放能重用的方法,其他功能尽量放在子类中实现,子类里方法的性能优于在基类中。 3.6 类的性能和其方法数量没有关系 新添加10个或多个方法到测试的类后,性能没什么差异。...3.9 方法不要细分得过多 仔细想想你真正打算重用的是哪些代码? 3.10 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。...这和声明相同数量的局部变量一样,PHP可能去检查这个全局变量是否存在。 4.8 使用++$i递增 当执行变量$i的递增或递减时,$i++会比++$i慢一些。...4.11 一定要对变量进行初始化 这里的“初始化”指的是“声明”。 当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一个好主意。

    2.8K110

    php代码抄写笔记

    php echo "我的第一段php脚本"; ?> 2nd PHP内嵌html 我的第一张PHP页面 PHP 函数准则: 函数的名称应该提示出它的功能 函数名称以字母或下划线开头(不能以数字开头) 实例 一个简单的函数,在其被调用时能输出我的名称: 导入操作是在编译执行的,但动态的类名称、函数名称或常量名称则不是。 3、导入和动态名称 执行以上程序,输出结果为: foo foo ---- Final 关键字 PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。...> ---- 调用父类构造方法 PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。 <?

    5.2K10

    PHP面向对象精华

    PHP面向对象精华 1 使用extends实现继承以及重载、魔术方法的含义 class B extends A 声明的时候B里可以没有A里的方法 调用的时候$b=new B(); $b->A里的方法()...也就是说,当在扩展类中使用self时,它调用的不是父类的方法,而是扩展类的重载的方法。self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。...要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。 PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。...如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承。...> [/php] 函数的传址调用 传址调用我就不多说了 下面直接给出代码 [php] function test(&$a) { a=a+100; } $b=1; echo $b;//输出1 test(b

    3.8K30

    “Fatal error: require(): Failed opening required...” 以及如何彻底避免它再次出现

    PHP实际上会让当前执行流程暂停,切换到目标文件,把它编译为操作码,再在当前作用域里执行。文件加载的四种形式PHP有四种主加载方式,它们不是语法糖,而是行为差异:include:温和模式。...最容易把线上搞崩的5类错误这些是我在遗留项目重构里反复见到的高频问题。...这是“我本地没问题”类事故的头号来源。_once的性能税错误写法:在高频循环里大量使用require_once。为什么会发生:担心Cannotredeclareclass之类的重复声明。...加载带副作用的文件错误写法:一个文件既定义类,又直接执行逻辑(输出HTML、连数据库等)。为什么会发生:历史代码里职责边界没分清。线上后果:测试几乎没法写。...你只是想测试类定义,却被迫触发数据库连接和页面输出。

    8810

    PHP 7 新特性

    > 以上程序执行输出结果为: 5 返回类型声明错误实例 实例 以上程序执行输出结果为: Runoob 五、PHP 匿名类 PHP 7 支持通过 new class 来实例化一个匿名类,这可以用来替代一些"用后即焚"的完整类定义。 实例 以上程序执行输出结果为: 我的第一条日志 六、PHP Closure::call() PHP 7 的 Closure::call() 有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数...0 - 使用或生成 Throwable, 仅仅是基于对象生成的警告而不是抛出对象(与 PHP 5 兼容) 1 - 生成和执行代码 (开发模式) 0 - 生成代码,但在执行时跳过它 -1 ...0 - 使用或生成 Throwable, 仅仅是基于对象生成的警告而不是抛出对象(与 PHP 5 兼容) 参数 assertion 断言。

    2K40
    领券