重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

回顾

面向对象:将自然界中的实体抽象出来,形成类。与面向过程相对,面向过程是指将一个事务分解成各个功能,然后对功能使用函数进行封装,在使用的时候调用函数即可。

 

面向的对象的基本概念:类,对象,实例化,抽象

 

类成员:属性,方法和类常量

 

访问限定修饰符:public,protected,private,var

 

魔术方法:在某些情况下会被自动触发的方法

语法:__(英文环境下的两个下划线)

 

__construct():构造方法,在对象被实例化之后,新生成的对象去调用方法,用来初始化对象里的属性

__destruct():析构方法,在对象被销毁的时候会自动调用,释放内存

unset:将指向内存的变量的指针给段掉

更改变量值:

等待脚本结束

 

对象的比较:==和===

对象的传值:默认是引用传值

封装DB类

类是一个工具,在需要的时候去调用他使用他。类里面不包含任何数据,所有数据的来源应该全部依赖在调用的时候外部传入。

mysql_connect

mysql_query

$sql = “insert into pro_student values(null,…..)”;

mysql_query($sql);

 

$db = new DB;

$sql = “insert into pro_student values(null,…..)”;

$db->insert($sql);

 

 

加载

如果要使用一个类来创建对象,那么必须先保证该类已经加载到内存,才能创建对象。

使用require或者include将需要使用的类文件给加载进来,然后才可以创建对象去使用。

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

在引入类文件的时候,需要每次都手动去加载文件。尤其是当脚本文件很大,需要使用很多类的时候,就需要加载很多类。PHP提供了一种机制,当类被使用的时候,系统会自动先判断当前内存里是否已经有该类,如果没有,会去指定的路径假面加载类文件。

 

自动加载

语法:__autoload(),魔术函数

参数:string $class,是一个类名,需要加载的类名

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

__autoload()只是提供了一个机制,能够在需要类的时候,自动的去找,如果用户需要去获取指定路径下的类文件,那么需要在函数体里去实现。

__autoload()原理

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

正确的自动加载

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

类成员:属性,方法和类常量

类常量:在类里面定义的常量

常量定义:define(‘常量名’,’常量值’);

类常量语法:const 常量名 = 常量值

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

访问常量

  1. 不能使用对象访问
  2. 只能使用类访问

语法:类名::常量名

:::范围解析操作符,专门用于类来访问类内部的数据或者方法

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

在类中有没有一中方法能够直接代替类名?self

self:自己的意思,只能在类内部使用,代替当前类名

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

类能够访问自己的普通方法,但是会报一个错误(严格错误),原因是因为方法是用户对象访问(普通方法)

类不能访问普通属性

 

类能访问的东西

类常量

静态属性

静态方法

(普通方法)会报错

 

静态:静态属性静态方法

静态属性:访问限定修饰符static 属性名

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

静态方法:访问限定修饰符 static function 方面名字

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

如何访问静态属性和方法?

通过类访问:类型::静态属性或者静态方法

属性访问

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

方法访问

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

注意:静态属性或者方法的访问,不需要进行类的实例化

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

静态的属性和方法也受访问限定修饰符的控制。

总结

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

做一个简单的计数器:统计当前类有多少个对象。

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

魔术方法

__toString():将对象按照字符串输出

对象不能直接输出

当对象碰到echo进行输出的时候,系统会自动触发__toString()方法

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

__clone():在对象被克隆的时候会自动调用的方法

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

如何获得一个类的对象?

  1. new 类,实例化对象
  2. 克隆

 

self与$this的区别

  1. 都是在类的内部被使用
  2. self代表当前类,$this代表当前访问类方法的对象
  3. self能访问静态的属性和方法,$this能访问普通的属性和方法(也能访问静态方法,不建议这样用)

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

模式

设计某个东西一种方式。

 

单例模式:对应到面向对象,永远只能从一个类产生出一个对象。

 

如何保证一个类只有一个对象?

构造和克隆都能产生新对象

  1. 克隆方法私有化:使得克隆不能产生新对象
  2. 阻止在类的外部进行实例化

 

如何实现单例模式?

三私一公

三私:私有化构造方法,私有化克隆方法,私有化静态对象属性

一公:公有获得对象的静态方法

见代码demo08_single.php

 

DB类的单例模式:见代码SingleDB.class.php

 

魔术常量

__CLASS__:当前的类名

__METHOD__:当期方法

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

对象判断

is_object:判断当前变量是否是一个对象

instanceof:判断一个对象是否属于某个类

重蔚自留地php学习第四十三天——自动加载-静态-魔术-单例

为何一个类要有普通方法和静态方法?

  1. 区分对象和类的操作
  2. 静态方法的执行效率比普通方法高(减少代码量,降低内存开销,提高效率)

用户管理类:类名Privilege

类需要实现的方法:注册,验证用户名,验证密码(两次是否一致,密码长度不能小于6位)

实现登陆方法:验证用户名和密码

信息都是通过DB类对象来进行数据库操作

class Privilege{

//属性用来保存db类的对象


//构造方法内连接数据库

Public function __construct(){

//加载DB类(使用自动加载)

//得到DB类的对象,保存在属性里

}


//注册

Public function register(){

//判断用户的数据是否合法

//组织SQL语句,密码使用md5加密


//调用DB类的插入方法

$this->属性->insert($sql);


}


//验证用户登陆信息

public function checkLogin($username,$password){

///判断参数的合法性

//对密码进行md5加密

//组织查询SQL语句

//$this->属性->getRow($sql);

//返回结果

}

}

注册:如果注册成功提示用户注册成功,进入到登录界面(跳转),不成功则回到当前界面

登录:登录成功提示用户,跳转到index.php界面,否则回到登录界面

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/10667.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚重蔚管理团队
上一篇 2018年12月26日 00:00
下一篇 2019年1月7日 00:00

相关推荐

  • 我来分享为什么众多SEO强调页面静态化。

      相信那些SEO优化的那些朋友们,肯定还在一股脑的想着如何让自己的网站安静下来,他们都把这一点列入了重中之重的位置。专家不赞成此观点,网站页面是动态还是静态,根据网站实际目的需求来确定就好了。今天说说…

    2022年12月4日
    00
  • 小编教你在SEO优化中,网站URL优化怎么做。

     接手或者创建一个网站时,首先要诊断该网站的网址url是否有被优化过,这是作为网站优化必做的事情,然后针对没有做优化的做好优化,优化过的url看看是不是适合这个网站,今天小编讲讲在SEO优化中,网站URL优化怎…

    2023年3月11日
    01
  • 好的网站制作应该具备哪些因素呢。

    很多的人咨询好的网站制作应该具备哪些因素呢?下面就由小编为大家介绍一下。 1、网页左上方的位置放重要内容 曾经有一个研究发现,蜘蛛对网页内容的权重判断是从左到右、从上到下这样子来的,越是靠在左上方位置,…

    2022年10月30日
    018
  • 教你伪静态利于百度收录吗。

    不要总是觉得百度收录开启伪静态比较好!有很多的站长朋友和seo人员呢?总是觉得百度收录开启伪静态比较好,不开启的话可能对收录的效果不是很好。 虽然说官方网站说的是百度收录或者谷歌收录等等,对伪静态都是比较…

    2023年6月20日
    00
  • 分享网站建设如何取舍动态或伪静态。

           网站建设是一个广阔的宣传平台,无法计算里面具体有多家企业。它上面承载着成千上万,甚至更多的网站内容。想要让自己的企业网站在这众多网站中脱颖而出,就必须有自己独特的魅力。在网站设计时无论从方案、…

    2023年6月18日
    02
  • 我来教你网站伪静态处理为什么对网站优化那么重要。

    很多做SEO优化的人在网站优化都会提到一点:那就是页面要做伪静态处理,很多人可能会不小心忽略掉这个重点,特别是新手,一开展优化工作就会一直盯着关键词布局关键词密度...今天我们就来说说网站伪静态处理为什么…

    2022年12月2日
    02
  • 教你SEO纯静态网站的优势在哪里。

    我们在做seo时,有些网站是纯静态的,很多人对纯静态网站的优点不太清楚,那么具体有哪些优点呢?接下来,随着小编一起来了解一下。 第1、首先我们先了解一下什么是纯静态网站,纯静态网站其实也就是是网站内页面都…

    2022年10月31日
    028
  • 教你SEO优化中页面静态化有什么好处。

    随着时代的变化,信息网络也在快速发展中,因此seo的工作方式方法也千变万化,并不能一成不变。在以前,基本所有网页都做成是动态的,因为这样网站的互动性非常好,但是动态网站的缺点也不能忽略,随着访问人数的增…

    2023年6月24日
    03

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息