热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面向对象编程-核心知识点讲解-自动加载-类常量-静态成员

使用函数strpos()函数去做,这个函数的返回值,如果存在返回位置,否则返回false,这样判断这个函数如果返回的是false的话,就说明没有limit

利用 oop 与 mysql扩展 完成一个数据库操作类:

新建一个 DB.class.php

设计属性:

设计getRow();

db类的设计

优化 用户输入的 select语句, 如果用户的select语句中 没有limited字句的话 我们手动增加limit 1 字句。

我们需要判断出来 用户的select语句中,是否有limit。判断字符串$query中 是否存在limit?

使用 函数strpos()函数去做,这个函数的返回值,如果存在返回位置,否则返回false,这样判断这个函数如果返回的是false的话,就说明没有limit

php技术博客

通过完成上面的代码,我们发现,凡是需要数据库操作,都需要使用 mysql_query()函数,而且通常都需要 判断是否执行成功。 因此会在执行sql语句时,会有重复性工作,因此应该将重复性代码抽取。

需要定义一个 专门执行sql的方法,如果执行失败 脚本停止运行,并输出错误信息。

类的设计

在需要执行的地方 调用这个方法。

面向对象编程

单独的类文件

通常情况下,我们都将类的定义 写到一个 专门的文件中,通常文件名的命名方式

类名.class.php 的形式

这样 在需要使用这个类时, 需要将类的定义文件引入当前脚本内。

php技术博客

 注意:类的定义不能重复,因此在引入外部类文件时,应该注意不能重复引入,否则。。

php blog

可以使用 require_once解决。

php教程

#p#面向对象编程-自动加载#e#

自动加载:

当 我们的项目是大部分甚至完全 按照面向对象思想编写的话,意味着会出现很多的类,很多的类文件。

每当在实例对象时,都需要引入类文件。

自动加载就为了解决每次都要引入类文件的问题:

会变成 所有的类 统一加载,而不是实例化时分别加载。

利用php提供的自动加载函数 :__autoload()   完成。

这个函数 会在 脚本需要某个类的定义,但是页面内并没有找到类的定义时,会被自动地调用。同时 在调用时,会将当前需要的类名作为参数,传递到__autoload()这个函数内:每次需要都会执行,因此 ,我们得到一个机会(时机),通过这个函数的执行 ,通过类名去将对应的类文件加载进来即可

自动加载

注意:

如果要保证自动加载能够完成,意味着我们能够想办法 通过类名 得到 类的文件名。

#p#php面向对象编程-类常量#e#

类常量:

定义在类中的常量

定义:

Const 常量名 = 常量值。

类常量

定义好的常量 是不会出现类实例化对象内的:

php 博客

调用:

不能像普通属性一样去访问这个常量:

php类常量

因为类常量是保存在 类空间的。不能使用对象去访问,应该使用 类去访问。

如果我们需要使用 类 去访问 类空间的内容,不能使用 –> 这个操作符, 应该使用 :: 这个操作符。 :: 范围解析操作符。

php学习博客

注意 类常量只能被类访问,换句话说,只要能够找到相关类,就可以访问到类的常量。

 :: 的区别:
-> 针对 对象 操作。

    ::  针对 类   操作

通常 如果数据保存在 对象空间,则应该使用 对象访问,反之 如果保存在 类空间,就应该使用 类去访问。 但是 方法比较特殊,是永远保存在类中。方法是既可以使用 对象去访问,也可以使用类去访问。

php技术博客

如果是在类的内部 需要调用当前类的常量的话,此时 可以使用 self 来代替当前的类。

self的使用

Self  $this的区别?

Self  代表类

$this 代表对象。

#p#php面向对象编程-静态方法和静态属性#e#


静态成员:

静态属性 和 静态方法

静态属性 和 静态方法,所谓静态,指的是 在定义是,我们制定属性或者方法为静态的,属性和方法是属于类的。

静态属性:

定义:

定义静态成员 只比非静态成员增加了一个static关键字

静态属性

访问:由于保存在类空间 因此应该使用 类名访问

php技术博客

访问类空间的内容 不需要实例化对象的。因为声明了一个类 就会有一个类空间。

 静态方法:

定义:

php学习博客

访问:

静态成员

例子:

制作一个对象计数器,每当实例化一个对象 这个计数器的值 +1 ,这个计数器 保存的是当前类所实例化的对象的个数。

找到一个可以保存计数的容器:静态属性

找到修改计数的时机:构造方法

static

测试的结果:

使用对象可以访问非静态属性,但是不可以访问静态属性。

静态方法

对测试的静态方法和非静态方法的测试:

结果显示,无论使用对象或者是类都可以静态和非静态方法。

php个人博客

究竟类调用方法 和 对象调用方法有什么区别?

区别 仅仅 在 $this 上。

$this  是在类的方法内,代表当前的对象的。

如果是使用 对象来调用 方法,那么会自动地(隐式地)将当前对象传递到方法内,并且使用$this来引用当前的对象。

如果是使用 类 去调用方法,就不能为方法内的$this赋值。

php blog

什么样的方法可以被类调用?

方法内是否使用了 $this.

究竟静态方法和非静态方法有什么区别?

静态方法 在定义时 就规定这个方法应该被类访问,因此 即使我们使用对象去调用这个方法,也不能将当前对象传递到这个方法内。

而非静态方法,是可以在使用对象调用时 将当前对象作为参数传递到方法内的,在方法内可以使用$this来引用当前调用这个方法的对象。

php 博客

推荐阅读
author-avatar
王永星2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有