重蔚自留地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日
下一篇 2019年1月7日

相关推荐

  • 小编分享纯静态页适合企业营销展示型网站吗。

    纯静态页适合企业营销展示型网站吗?做一个网站,对企业来说实在不是什么稀奇的事情。很多公司为了更好的开展网络营销,不仅设计制作了网站,而且还会针对不同的营销需求,同时运营几个网站。虽然有了网站,但是也…

    2022年10月31日
    027
  • SEO优化的URL应当如何设置。

    一般网站1个网页页面相匹配1个url,我们见到某些网站有的URL相对路径很长有的却较为短,有的夹杂着某些特殊符号,一般这种URL常有必须的特殊符号,那么,SEO优化的URL应当如何设置,下面就由小编为大家介绍一下。 S…

    2022年10月30日
    020
  • 我来教你静态网站建设与动态网站建设有哪些区别。

    动态网站建设和静态网站建设有什么区别?近期有很多顾客问到这个问题,对于很多人来说,可能觉得看到动态网站建设会更好,人们会问为什么要让它静止呢?大家可能对这两种类型的网站建设有一些误解,下面将为大家解释…

    2023年6月13日
    01
  • 我来分享为什么众多SEO强调页面静态化。

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

    2022年12月4日
    00
  • 网站seo伪静态好处,为了迎合搜索引擎的抓取

    最近总觉得没有什么存在感,或者都沉浸在自己的折腾当中,所以就去百度知道给大家解答解答关于 WordPress 及网站优化相关的问题去了,这不就有人问网站伪静态为什么有利于SEO 优化,有正合适最近不知道写点什么,所…

    2022年5月23日
    0237
  • PHP入门指南:自动加载。

    PHP是一种流行的开源脚本语言,广泛应用于Web开发中。在使用PHP编写Web应用程序时,程序员必须处理许多文件之间的依赖关系,这可能导致代码难以维护和复杂。为解决这个问题,PHP提供了自动加载机制。在这篇文章中,…

    2023年5月30日
    00
  • 教你伪静态利于百度收录吗。

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

    2023年6月20日
    00
  • 好的网站制作应该具备哪些因素呢。

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

    2022年10月30日
    017

联系我们

QQ:951076433

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