php笔记1

php从零开始

1.基础篇

1.1  php变量

php的变量定义必须以$符号开始,变量名区分大小写,且只能包含字母数字以及下划线(这点貌似汇编语言通用的规则)

php定义变量不需要定义数据类型,会自动转?(数字转number?其它的转string?)

变量的四种作用域{

local: 局部变量;

global: 全局变量;

static: 当函数执行完内部的局部变量会被回收,而static定义会阻止其被删除;

parameter: 所谓的参数作用域值的是传给函数的实参;

}

$变量的作用域: 在函数外部定义的变量称之为全局,但是在函数内部访问全局变量的话需要使用global关键字(凑,这样难道

就能节省命名空间了么?降低垃圾回收的内存消耗?)

在函数内使用全局变量时不能给global 变量直接赋值(难道是因为不能重复定义么?无论外部是否已经赋值,只要

全局变量已经定义,就不能在函数内部给全局变量定义的同时赋值)

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。

index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

1.2 echo与print (这俩个只能输出字符串)

echo语句: 可以输出一个或者多个字符串;

print语句: 只允许输出一个字符串;

相对而言:前者比后者速度更快(难道是因为前者没有返回值,或者总是返回1的缘故??);

俩者都能输出html标签,但是在使用标签的情况下不能使用括号,因为这样会造成标签的解析错误.

只有引号内的标签才能正常解析.

1.3 php eof

    用来定义一个字符串,必须后接分号,标识结束符必须独占一行.

eof开始标签后不能有空格或者tab字符;

1.4 php 7大数据类型

字符串(string)

整型(integer)

浮点型(float)

布尔型(boolean)

arrqy(数组)

object(对象)

null(空值)

可以使用var_dump函数来检测变量的数据类型

1.5 常量

常量名不需要使用$修饰符,常量默认为全局,且在函数内部可以直接使用常量,不需要global修饰符

使用define 定义常量 常量名默认区分大小写的

1.6 php变量

php的唯一字符串运算符".",用于拼接字符串(为什么不直接加号,其他服务端语言是否也不是加号呢?)

strlen()函数检测字符串的长度(是否计算空格的长度?空格也算做长度,不管是否在字符之后)

strpos()函数返回所检索值的首字符位置,与js的indexOf()相似;

1.7 PHP_EOL文本换行(如果在浏览器中echo或者print那么得到到只能是字符串,只有在终端运行才能换行,例如:"php demo.php")

因为不同平台换行的指令不一样,windows下是"/r/n",mac用"/r",linux下用'/n',

所以php的一个属性PHP_EOL适用于所有平台的文本换行.

1.8 php中的组合运算符"<=>"

组合操作符也称之为太空操作符,

如果第一个运算符成立 则返回 -1

中间的运算符成立 则返回 0

第三个运算符成立 则返回 1

1.9 php中的数组

{

  数值数组:带有数字ID键的数组;

  关联数组:带有指定键的数组,每个键关联一个值;

  多维数组:包含一个或者多个数组的数组;

}

那么怎么区分呢,首先数组是按照一定顺序逻辑排列的能存储多个值的特殊变量;

那么三者之间的区别就在于排布逻辑;数值即按默认的数值id递增,下一项的索引(id)会默认加一;索引遍历即可.

而关联数组则是指定某个键值对作为每一项,且可以无序,这样就不是通过索引来配对了,键值对遍历即可.

在js中就是数组每项都是对象这样;(这点比js要舒服些)

多维数组就顾名思义了,数组的每一项都可以是数组,而数组的类型可以是以上任意一种,遍历的话就需要看具体情况了.

数组的长度则需要是用count()函数了

$貌似除了数值数组能使用for循环外,其它的俩个数组只能使用foreach开遍历,是因为php中没有对象这个概念.

1.10 数组排序

sort()对数组进行升序排序

rsort()降序排序

asort()根据关联数组的值,升序

ksort()根据关联数组的键,升序

arsort()根据关联数组的值,降序

krsort()根据关联数组的键,降序

1.11 php中输出语法指令集合

$1. echo,print 只能输出字符串

$2. die() 一般用于数据库连接的判断,一旦持行die后面的内容讲不执行

$3. printf() 用于格式化输出

4. sprintf() 把输出内容放在变量中 并不能直接输出内容,只能存在于变量之中

$5. print_r() 用于输出数组

$6. var_dump 可以输出任何内容

7. var_export() 返回关于传递给函数的变量的结构函数

1.12 php中的超级全局变量

所谓的超级变量类似于js中的window对象中的属性概念.

$GLOBALS:一个包含了全部变量的的全局组合数组(局部变量呢?被回收了的局部变量呢?只限于全局变量)

$_REQUEST.........具体查看官方文档

1.13 php中的预定义常量

__LINE__ 文件的当前行号

__FILE__ 文件的完整路径与文件名

__DIR__ 文件所在的目录

__FUNCTION__ 函数名称

__CLASS__ 类名

__TRAIT__ trait与use配合使用,可以时一个类集成基类方法属性的同时,又能拥有别的类的方法

__METHOD__ 类的方法名

__NAMESPACE__ 当前命名空间的名称

1.14 php的命名空间

其意义在于将引进了前端模块化的思想,这样可以避免命名的冲突,不至于因为代码量大臃肿导致维护困难.

将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。

全局代码必须用一个不带名称的 namespace 语句加上大括号括起来,与vue一样都能使用子命名空间.

1.15 php的构造函数 __construct()

主要用来创建对象时初始化对象,比如给对象成员变量赋初始值

PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

1.16 php的析构函数 __destruct()

在对象结束其生命周期时,系统自动执行析构函数

1.17 php的类继承 extends

1.18 php对属性和方法的访问控制

public(共有): 公有的类成员可以在任何地方被访问

protected(受保护): 受保护的类成员则可以被其自身以及其子类和父类访问,实例化的会报错.

private(私有): 私有的类成员则只能被其所定义的类访问

前俩者可以因为可以被继承,所以是可以重定义的,但是私有不允许

1.18 使用interface来定义接口 与类想死,但是定义的所有方法都是空的,

  要实现一个接口,就得使用implements操作符,类中必须实现接口中定义的所有方法,否则会报错.

1.19 抽象的类不能实例化 关键字 abstract

1.20 static关键字定义的类属性或方法,不能被实例化类直接访问

    php调用类的内部静态成员,或者是类之间调用就要用::

1.21 如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

你可能感兴趣的:(php笔记1)