学斋随笔,初九潜龙勿用,-51关于类的自动加载,遍历,魔术常量,序列化反序列化

  类的自动加载是外面的页面中,并不需要去“引入”(包含)类文件,但是程序会在需要一个类的时候就自动去“动态加载”该类。

  1.使用__autoload魔术函数。它自己引

  2.使用spl_autoload_register函数

  对象也可以可以使用foreach语句进行遍历,有两点注意:

  1,只能遍历属性。

  2,只能遍历“看得到”的属性——代码所在范围可访问。

  内置标准类,直接new一个,里面属性只要用就有,很随意。

  数据转对象,对象转数据,

  对象转换为对象:没有变化;

  数组转换为对象:数组的键名当作属性名,值为对应值;

    但通常,如果数数字下标,则其对应属性 并不方便操作

    所以通常就适合于纯字符下标的数组。

  其他标量数据转换为对象:属性名为固定的“scalar”,值为该变量的值。

  对于类型约束在php里不用太在意,php属于弱类型语言。

  与类有关的魔术常量:

    __CLASS__,:获取其所在的类的类名。

    __METHOD__:获取其所在的方法的方法名。

  数据(变量)序列化和反序列化

  序列化是将一个变量的数据“转换为”字符串——但并不是类型转换并将该字符串“存储起来”。

  反序列化就是将储存的文本文件再返回成原数据。 

序列化:

  $str = serialize($变量); //此时该变量的数据就变成了字符串,并存入变量$str1;

  但通常的应用出,此时就应该将其保存为文件(或数据库),如下:

  file_put_contents(“文本文件路径”,   $str);

反序列化:

  $str = file_get_contents(“文本文件路径”); //先从文本文件中取得内容

  $v1 = unserialize( $str); //反序列化,此时$v1这个变量中存储的就是原来变量内容(和类型)

 其他魔术方法 

  __sleep(), 和 __wakeup()

  当对一个对象进行“序列化”操作的时候,会自动调用类中的__sleep()方法;

  当“反序列化”一个对象的时候,会自动调用对应类中的__wakeup()方法;

  __tostring()方法

  当把一个对象当作一个“字符串”来看待(处理)的时候,会自动调用该魔术方法。

  __invoke()方法

  对象当作一个“方法”(函数)的时候,会自动调用该魔术方法。

  

  

原文地址:https://www.cnblogs.com/biruofeng/p/10550575.html

时间: 2024-08-29 17:15:52

学斋随笔,初九潜龙勿用,-51关于类的自动加载,遍历,魔术常量,序列化反序列化的相关文章

final,类的自动加载,命名空间

final是干什么的一般是为了防止父类的一个方法被重写如果父类中的方法被声明为 final,则子类无法覆盖该方法.如果一个类被声明为 final,则不能被继承. Note: 属性不能被定义为 final,只有类和方法才能被定义为 final. 类的自动加载类的自动加载是指,在外面的页面中,并不需要去"引入"类文件,但是程序会在需要的时候动态加载需要的类文件. spl_autoload_register() 函数可以注册任意数量的自动加载器,当使用尚未被定义的类(class)和接口(in

类的自动加载

很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件.一个很大的烦恼是不得不在每个脚本开头写一个长长的包含文件列表(每个类一个文件). 在 PHP 5 中,不再需要这样了.可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用.通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类. spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载.因此,不再建议使用 __autoload() 函数,在

PHP的类文件自动加载机制

搜集于网络,学习php的类的自动加载机制,在实际大型项目中其重要性尤为突出. PHP的类自动加载机制 在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来.这个在小规模开发的时候,没什么大问题.但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且require_once的代价很大. 在PHP5之前,各个PHP框架如果要实现类的自动加载,一般

Final关键字和类的自动加载

Final关键字: 父类中的方法被声明为 final,则子类无法覆盖该方法.如果一个类被声明为 final,则不能被继承. 一般是为了防止父类的一个方法被重写.只能用来定义类和定义方法, 不能使用final这个关键字来定义成员属性,因为final是常量的意思,我们在PHP里定义常量使用的是define()函数,所以不能使用final来定义成员属性.1.被final修饰的类不可以被继承 2.被final修饰的方法不可以被重写 3.被final修饰的变量不可以被改变被final修饰不可变的是变量的引

PHP面向对象——Final关键字 类的自动加载

1.Final关键字 含义:最终的,最后的 作用: 1.如果父类中的方法被声明为 final,则子类无法覆盖该方法. 如果一个类被声明为 final,则不能被继承. 2.属性不能被定义为 final,只有类和方法才能被定义为 final. 用法:直接在类或者方法前加final关键字. --------------------------------------------------------------------------- 2.类的自动加载 含义: 1.解决代码重复,把重复的代码写在一

php 类的自动加载

在编写面向对象(OOP) 程序时,很多开发者为每个类新建一个 PHP 文件. 这会带来一个烦恼:每个脚本的开头,都需要包含(include)一个长长的列表(每个类都有个文件). 在 PHP 5 中,已经不再需要这样了. spl_autoload_register() 函数可以注册任意数量的自动加载器,当使用尚未被定义的类(class)和接口(interface)时自动去加载.通过注册自动加载器,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类. Tip 尽管 __autoload()

面向对象之final,类的自动加载,命名空间

Final关键字:最终的属性不能被定义为 final,只有类和方法才能被定义为 final.特点:Final类不能被继承: 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继承.比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型.Final 方法不能被重写:如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符类的自动加载简化开发者书写文

final关键字,类的自动加载,命名空间

final关键字 1.final可以修饰方法和类,但是不能修饰属性: 2.Final修饰的类不能被继承: 3.Fina修饰的方法不能被重写,子类可以对已被final修饰的父类进行访问,但是不能对父类的方法进行重写. 扩展内容: 类的自动加载: 什么是类的自动加载? Spl_autoload_register():注册给定的函数作为__autoload()函数的实现 类的自动加载 在最开始使用的是__autoload()进行自动加载,但是在PHP5.3之前,__autoload函数抛出的异常不能被

Yaf零基础学习总结5-Yaf类的自动加载

Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的时候, 会通过SPL注册一个自己的Autoloader, 出于性能的考虑, 对于框架相关的MVC类, Yaf Autoloader只以目录映射的方式尝试一次. 具体的目录映射规则如下: 对于控制器 Controller 默认模块下为{项目路径}/controllers/, 否则为{项目路径}/mod