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

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 处理docker容器时间和宿主机时间不一致问题的方法
    本文介绍了处理docker容器时间和宿主机时间不一致问题的方法,包括复制主机的localtime到容器、处理报错情况以及重启容器的步骤。通过这些方法,可以解决docker容器时间和宿主机时间不一致的问题。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
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社区 版权所有