继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

深入理解php基础

qq_然_1
关注TA
已关注
手记 2
粉丝 0
获赞 0

深入理解php基础

PHP是弱类型的动态语言。

PHP中的变量不需要显式的数据类型定义,可以给变量赋值任意类型的数据, PHP变量之间的数据类型转换有两种: 隐式和显式转换。

隐式类型转换也被称为自动类型转换,是指不需要程序员书写代码,由编程语言自动完成的类型转换。

显示类型转换也就是强制类型转换,

PHP中允许的强制类型有:

(int), (integer) 转换为整型

(bool), (boolean) 转换为布尔类型

(float), (double) 转换为浮点类型

(string) 转换为字符串

(array) 转换为数组

(object) 转换为对象

(unset) 转换为NULL

变量按作用域类型分为:全局变量和局部变量。全局变量是在整个程序中任何地方随意调用的变量, 在PHP中,除了声明在函数体内的普通变量均为全局变量,相对于全局变量,局部变量的作用域是程序中的部分代码(如函数中),而不是程序的全部。

变量的作用域与变量的生命周期有一定的联系, 如在一个函数中定义的变量, 这个变量的作用域从变量声明的时候开始到这个函数结束的时候。 这种变量我们称之为局部变量。它的生命周期开始于函数开始,结束于函数的调用完成之时。

global 关键字用于函数内访问全局变量。在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字。

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

$GLOBALS,$_SERVER,$_REQUEST,$_POST,$_GET,$_FILES,$_ENV,$_COOKIE,$_SESSION

变量函数是指如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且将尝试执行它。

在PHP中,没有过程这个概念,只有没有返回值的函数。但是对于没有返回值的函数,PHP内核会“帮你“加上一个NULL来做为返回值。

匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数, 最常见应用是作为回调函数。

闭包是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数, 这个被引用的自由变量将和这个函数一同存在,即使离开了创建它的环境也一样,所以闭包也可认为是有函数和与其相关引用组合而成的实体。 在一些语言中,在函数内定义另一个函数的时候,如果内部函数引用到外部函数的变量,则可能产生闭包。在运行外部函数时, 一个闭包就形成了。

PHP使用闭包(Closure)来实现匿名函数, 匿名函数最强大的功能也就在匿名函数所提供的一些动态特性以及闭包效果,如果需要访问上层作用域内的变量则需要使用use语句来申明。

面向对象是一种编程范式,它将对象作为程序的基本单元,将程序和数据封装起来, 以此来提高程序的重用性、灵活性和可扩展性。

面向对象的三大特性(封装、继承、多态),其中封装是一个非常重要的特性。封装隐藏了对象内部的细节和实现, 使对象能够集中而完整的描述并对应一个具体的事物, 只提供对外的访问接口,这样可以在不改变接口的前提下改变实现细节,而且能使对象自我完备。 除此之外,封装还可以增强安全性和简化编程。 在面向对象的语言中一般是通过访问控制来实现封装的特性。

类是用户定义的一种抽象数据类型,它是现实世界中某些具有共性事物的抽象。 有时我们也可以理解其为对象的类别。类也可以看作是一种复合型的结构,其需要存储多元化的数据, 如属性、方法、以及自身的一些性质等。

类的成员变量在PHP中本质上是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的。 类的成员变量也称为成员属性,它是现实世界实体属性的抽象,是可以用来描述对象状态的数据。

1,接口中不允许使用成员变量

2,成员变量不能拥有抽象属性

3,不能声明成员变量为final

4,不能重复声明属性

类的成员方法在PHP中本质上是一个函数,只是这个函数以类的方法存在,它可能是一个类方法也可能是一个实例方法, 并且在这些方法上都加上了类的访问控制。类的成员方法是现实世界实体行为的抽象,可以用来实现类的行为。

类的静态成员变量是所有实例共用的,它归属于这个类,因此它也叫做类变量。与普通成员变量不同,类变量可以直接通过类名调用,这也体现其称作类变量的特别。

类的静态成员方法通常也叫做类方法。 类方法可以通过类名直接访问。

类的常量属于类。

PHP中使用extends关键字来进行类的继承,一个类只能继承一个父类。 被继承的成员方法和成员变量可以使用同名的方法或变量重写,如果需要访问父类的成员方法或变量可以 使用特殊类parent来进行。

如果子类有自己的构造方法,并且需要调用父类的构造方法时 需要在子类的构造方法中调用父类的构造方法,PHP不会自动调用。

self特殊类指向当前类,但只有在类定义内部才有效, 但也并不一定指向类本身这个特殊类。

PHP后期静态绑定的功能,用于在继承范围内引用静态调用的类。 该功能从语言内部角度考虑被命名为“后期静态绑定”。 “后期绑定”的意思是说,static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。 也可以称之为”静态绑定“,因为它可以用于(但不限于)静态方法的调用。

PHP中的static关键字非常多义:

1,在函数体内的修饰变量的static关键字用于定义静态局部变量。

2,用于修饰类成员函数和成员变量时用于声明静态成员。

3,在作用域解析符(::)前又表示静态延迟绑定的特殊类。

4,static特殊类指向触发方法调用的类。

对象是我们可以进行研究的任何事物,世间万物都可以看作对象。它不仅可以表示我们可以看到的具体事物, 也可以表示那些我们看不见的事件等。对象是一个实体,它具有状态,一般我们用变量来表示, 同时它也可以具有操作行为,一般用方法来表示,对象就是对象状态和对象行为的集合体。

在之前我们很多次的说到类,对于对象来说,具有相同或相似性质的对象的抽象就是类。 因此,对象的抽象是类,类的具体化就是对象,我们常常也说对象是类的实例。 从对象的表现形式来看,它和一般的数据类型在形式上十分相似,但是它们在本质是不同的。 对象拥有方法,对象间的通信是通过方法调用,以一种消息传递的方式进行。 而我们常说的面向对象编程(OOP)使得对象具有交互能力的主要模型就是消息传递模型。 对象是消息传递的主体,它可以接收,也可以拒绝外界发来的消息。

在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域内的标识符, 且本身也用一个标识符来表示,这样便将一系列在逻辑上相关的标识符用一个标识符组织了起来。 函数和类的作用域可被视作隐式命名空间,它们和可见性、可访问性和对象生命周期不可分割的联系在一起。

命名空间可以看作是一种封装事物的方法,同时也可以看作是组织代码结构的一种形式,在很多语言中都可以见到这种抽象概念和组织形式。 在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:

1,用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

2,为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP