热门标签 | 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 博客

推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细探讨了Netty中Future及其子类的设计与实现,包括其在并发编程中的作用和具体应用场景。我们将介绍Future的继承体系、关键方法的实现细节,并讨论如何通过监听器和回调机制来处理异步任务的结果。 ... [详细]
  • 本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
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社区 版权所有