- 相关推荐
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++){...code...}
请不要在 for 循环的上面三个表达式当中写函数,因为每次循环都会执行一遍
如果要循环数组,最好使用 foreach
foreach( $array as $key => $value) {}
此外还有 while 和 do … while 循环,这个和其他语言是类似的,值得一提的是,在 PHP 的编程之中,使用 foreach 的频率最高,因为 PHP 的最终运算都是数组以及字符串(所以你看 PHP 的数组和字符串函数是不是特别多和强大)
可以使用 break 和 continue 跳过循环
switch 语句
switch($var) {
case 1:
...code...
break;
case 2:
...code...
default:
...code...
}
include 语句
包含并运行指定文件
require 语句和 include 基本等价,暂时不用区分
include_once 以及 require_once 语句不会重复包含文件,这是和 include 以及 require 的区别
include 'test.php';
其他
goto 语句、declare 语句
函数
function test($var1, &$var3, $var2 = 1) {
...code...
return $result;
}
这是一个函数的定义,其中 $var1 是必填参数,$var2 带有一个默认值,是可选参数,必填参数不能放在可选参数之后
return 会返回一个函数的值
参数可以使用引用参数,如 $var3,这样你就可以带多个参数出来了,这种函数在 PHP 自带的函数里很常见
关于函数的内容,和其他语言类似,也有局部变量、全局变量、闭包等,这里暂时先不讨论
类与对象
每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义,类对大小写不敏感
一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)
class A{
public $var1 = 1;
protected $var2;
private $var3;
public function test(){}
}
当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用
class A{
...code...
public function test(){
return $this->var2; // protected 属性 $var2 没有初始化,因此返回一个null
}
}
要创建一个类的实例,必须使用 new 关键字
...code...
$a = new A();
一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类
class B extends A {
...code...
}
命名空间
PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径,用来解决名字冲突或者不好起名字的问题
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间
namespace MyTest;
...code...
由于在我们在讨论 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, 然后把异常抛出。
【php基础知识】相关文章:
关于php面试宝典及PHP面试技巧08-16
PHP的压缩函数06-21
php高级教程01-23
如何学好PHP知识09-20
PHP的基础编程与应用10-16
浅析php函数的实例06-08
配置 PHP 调试环境07-20
PHP的错误机制总结09-09