定义
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器"
PHP文件
PHP 文件的默认文件扩展名是 “.php”
PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
作用
PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookies
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据
通过 PHP,您不再限于输出 HTML。您可以输出图像、PDF 文件,甚至 Flash 电影。您还可以输出任意的文本,比如 XHTML 和 XML。
安装
- 使用支持 PHP 的 Web 主机
只要在您的 web 目录中创建 .php 文件即可,服务器将自动为您解析这些文件。 - 在安装 Web 服务器
安装 PHP
安装数据库,比如 MySQL
语法
PHP 脚本以 <?php 开始,以 ?> 结束:
<?php
<?php
// 这是 PHP 单行注释
/*
这是
PHP 多行
注释
*/
?>
?>
变量
变量以 $ 符号开始,后面跟着变量的名称
当您赋一个文本值给变量时,请在文本值两侧加上引号。
弱类型语言,不必声明变量类型
作用域
1、定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。
2、函数内定义的变量就是局部变量,它的作用域为函数定义范围内。
3、函数之间存在作用域互不影响。
4、函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组
输出方式
echo - 可以输出一个或多个字符串
使用的时候可以不用加括号,也可以加上括号: echo 或 echo()
print - 只允许输出一个字符串,返回值总为 1
可以使用括号,也可以不使用括号: print 或 print()。
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
PHP EOF(heredoc) 使用说明
$a=2;
$b= <<<EOF
"zyf"$a
"zyf"
EOF;
echo $b; //结果连同双引号一起输出:"zyf"2 "zyf"
- 必须后接分号,否则编译通不过。
- EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
- 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)
整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
<?php
$cars=array("Volvo","BMW","Toyota"); #创建了一个数组
var_dump($cars); #返回数组的数据类型和值
?>
对象
对象必须声明。
class关键字声明类对象
NULL 值表示变量没有值
类型比较
松散比较:使用两个等号 == 比较,只比较值,不比较类型。
严格比较:用三个等号 === 比较,除了比较值,也比较类型。
常量
常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
<?php
// 区分大小写的常量名
define("GREETING", "Hello world");
echo GREETING; // 输出 "HEllo world"
?>
常量是全局的
字符串变量
赋一个文本值给变量时,请记得给文本值加上单引号或者双引号。
并置运算符 (.) 用于把两个字符串值连接起来。
strlen() 函数返回字符串的长度(字节数)。
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
<?php
echo strpos("Hello world!","world"); 在字符串 "Hello world!" 中查找文本 "world"
?>
三元运算符
表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
遍历
for
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>
关联数组
//$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
//or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
echo "Peter is " . $age['Peter'] . " years old.";
//Peter is 35 years old.
** 数组排序函数**
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
字母,数字
** 超级全局变量**
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
foreach 循环
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
foreach ($array as $value)
{
要执行代码;
}
函数
函数是通过调用函数来执行的。
PHP 函数准则:
函数的名称应该提示出它的功能
函数名称以字母或下划线开头(不能以数字开头)
<?php
function functionName()
{
// 要执行的代码
}
?>
为了给函数添加更多的功能,我们可以添加参数,参数类似变量。
参数就在函数名称后面的一个括号内指定。
如需让函数返回一个值,请使用 return 语句。
魔术常量
LINE
文件中的当前行号。
FILE
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
DIR
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
FUNCTION
本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
CLASS
自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
在 PHP 4 中该值总是小写字母的。
PHP 命名空间(namespace)
解决问题
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
定义命名空间
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
子命名空间
与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称。
namespace MyProject\Sub\Level; //声明分层次的单个命名空间
命名空间使用
未完待续
面向对象
类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
对象 − 是类的实例。
成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
成员函数 − 定义在类的内部,可用于访问对象的数据。
继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
子类 − 一个类继承其他类称为子类,也可称为派生类。
多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。