php基础知识大全

PHP是一种非常流行的开源服务器端脚本语言,下面小编整理了php基础知识大全,希望对大家有帮助!

php基础知识大全

 PHP 标记

当解析一个文件时,PHP 会寻找起始和结束标记,也就是 ,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略

PHP 也支持其他标记,但是!由于各种原因和理由,请只使用“”

echo 'hello world';

?>

PHP 支持 8 种原始数据类型

四种标量类型:布尔型、整型、浮点型、字符串

两种复合类型:数组、对象

两种特殊类型:资源、null

// 布尔型:true 和 false

$var = true;

// 整型

$var = 1;

// 浮点型

$var = 3.14;

// 字符串

$var = 'girl friend';

// 数组

$var = [true, 1, 3.14, 'girl friend'];

//对象

class Test{

public $value = '';

}

$var = new Test();// 类Test的对象

// 资源类型指文件、数据库等句柄,因此这里不举例

// null

$var = null;

 变量

PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的

一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线

如:$var 、 $_var 、 $_1 、 $var1 ……

不合法变量的例子: $1 、1 、 var ……

PHP 的变量是动态设置和使用的,这表示,你不需要像 java 等语言那样,需要使用一个前缀(或其他)的方式去声明一个变量的类型,而且,PHP 变量的类型是根据上下文语境去判定,因此上面关于类型的例子是可以成功执行的,$var 最终的值会变成 null

 常量

常量是一个简单值的标识符(名字),常量默认为大小写敏感。传统上常量标识符总是大写的

下面这个出现在 C 语言的笑话,在 PHP 里是行不通的,所以,不要和蠢萌的新手开这种玩笑了,同时也建议,不要随便定义系统自带的值,因为常量一旦被定义,就无法重新定义!

define("TRUE", false);

 运算符

这一块和你认识的其他语言的运算符类似,比如 + 就是加法等等,这里只说明一些需要注意的.,具体的在具体篇幅里会详细介绍

算术运算符:+,-,*,/,%(求余)

= 是赋值号,== 是等于号,=== 是全等于(会比较类型),等号还有类似的 != 和 !==

@ 是错误控制运算符,可以抑制之后的表达式产生的错误,不要依赖它,因为,耗性能以及让别人无法找出 bug

位运算符:& 按位与,| 按位或,^ 按位异或,~ 按位取反,<< 左移,>> 右移

逻辑运算符:and,or,not 或者 &&,||,!,请一定使用后者,前者可能导致一些问题

递增(减)运算符:++,–

字符串拼接: ‘hello’ . ‘world’

数组运算符:+联合,==等于,===全等于(会比较键值对顺序),还有类似的不等于!= 和 !==,用得不多,没有人用这种方式去比较数组,毕竟 PHP 函数很强大

类型运算符:instanceof

 流程控制

if 语句

if (true) {

// 这个分支并不是一个笑话,你可以在注释某一段代码时使用,而且这种写法适用于所有的程序

}elseif ( $var == 1) {

// == 是等于,在类型不一致时 PHP 会尝试强制转换

// 尤其注意数字的强制转换,PHP 会尝试把和数字比较的东西转换成数字去比较

// 因此 '1a' == 1 是成立的,a会被丢掉

}else if ( 1 === $var ) {

// 基于 == 的不靠谱比较,请明确了解变量类型时,使用 === 代替 ==

// 并且让常量放在前面是一个好习惯,不会因为少写了等号变成赋值号而出现意外

}else {

// 以上是关于 if 的需要注意的细节以及 if 流程控制的用法,我是不是太懒了

}

for 语句

for (expr1; expr2; expr3)

for ($i = 1; $i <=10; $i++){...}

请不要在 for 循环的上面三个表达式当中写函数,因为每次循环都会执行一遍

如果要循环数组,最好使用 foreach

foreach( $array as $key => $value) {}

此外还有 while 和 do … while 循环,这个和其他语言是类似的,值得一提的是,在 PHP 的编程之中,使用 foreach 的频率最高,因为 PHP 的最终运算都是数组以及字符串(所以你看 PHP 的数组和字符串函数是不是特别多和强大)

可以使用 break 和 continue 跳过循环

switch 语句

switch($var) {

case 1:

...

break;

case 2:

...

default:

...

}

include 语句

包含并运行指定文件

require 语句和 include 基本等价,暂时不用区分

include_once 以及 require_once 语句不会重复包含文件,这是和 include 以及 require 的区别

include '';

 其他

goto 语句、declare 语句

 函数

function test($var1, &$var3, $var2 = 1) {

...

return $result;

}

这是一个函数的定义,其中 $var1 是必填参数,$var2 带有一个默认值,是可选参数,必填参数不能放在可选参数之后

return 会返回一个函数的值

参数可以使用引用参数,如 $var3,这样你就可以带多个参数出来了,这种函数在 PHP 自带的函数里很常见

关于函数的内容,和其他语言类似,也有局部变量、全局变量、闭包等,这里暂时先不讨论

类与对象

每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义,类对大小写不敏感

一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)

class A{

public $var1 = 1;

protected $var2;

private $var3;

public function test(){}

}

当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用

class A{

...

public function test(){

return $this->var2; // protected 属性 $var2 没有初始化,因此返回一个null

}

}

要创建一个类的实例,必须使用 new 关键字

...

$a = new A();

一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类

class B extends A {

...

}

 命名空间

PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径,用来解决名字冲突或者不好起名字的问题

命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间

namespace MyTest;

...

由于在我们在讨论 PHP 的时候,可能大多数情况都是讲网站,而如今 PHP 出现了大量的 web 框架,这些框架大多数也使用了命名空间(PHP 5.3 以下没有命名空间),而他们基本上都会一个 PHP 文件对应一个类,因此,我们给命名空间命名的时候基本遵循和类的名字一致,都是大驼峰写法

  异常处理

function inverse($num){

if ($num == 0) {

throw new Exception('错误:分母为0!');

}

return 1 / $num;

}

try {

echo inverse(2); // 返回 0.5

echo inverse(0); // 抛出异常

} catch (Exception $e) {

echo $e->getMessage();

}

我们想要写一个计算倒数的函数,在函数里,我们必须自己判断分母是不是等于 0, 然后把异常抛出。