PHP 语法

// PHP 教程 //
// //
//////////////////////////////////////

一、PHP 简介
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")
是一种创建动态交互性站点的强有力的服务器端脚本语言。

	【特点】:
		1. 免费开源
		2. 使用广泛
		3. 简单易学
		4. 跨平台
	【用途】:
		常用于Web服务器开发中
	【文件】:
		.php 的后缀名
		
		1. 可包含在文本、html、Javascript、PHP中
		2. 服务器上执行, 返回纯html 给浏览器
	【PHP 功能】:
		1. PHP 可以生成动态页面内容
		2. PHP 可以操作(创建、打开、读取、写入、关闭)服务器上的文件
		3. PHP 可以收集表单数据
		4. PHP 可以发送和接收 cookies
		5. PHP 可以添加、删除、修改您的数据库中的数据
		6. PHP 可以限制用户访问您的网站上的一些页面
		7. PHP 可以加密数据

二、PHP 基本语法
【基本语法】
1. 基本语义结构:

1) PHP 脚本可以放在文档中的任何位置。
2) PHP 脚本以 结束:
2. PHP 中注释
1) 单行注释
// PHP单行注释掉的代码
2) 多行注释(区块注释)
/* 多行注释掉的代码 */
【变量】
1. PHP 变量规则:
a. 变量以 $ 符号开始,后面跟着变量的名称
b. 变量名必须以字母或者下划线字符开始
c. 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
d. 变量名不能包含空格
e. 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
2. 创建(声明)变量
例:

3. 作用域 (和C 语言差不多)
a. local
b. global
c. static (静态变量,保留上次的值。仍然是局部变量)
d. parameter

			记:
				1. 在新定义的一个函数内,在访问一个全局变量时,要在变量前面加上 global 关键字
				2. 参数作用域,是在参数传参时,拷贝变量值
	【数据类型】
	
		1. String(字符串)
		2. Integer(整型)
			整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
		3. Float(浮点型)
		4. Boolean(布尔型)
			true 和 false
		5. Array(数组)
			例:
			<?php 
				$cars=array("Volvo","BMW","Toyota");
				var_dump($cars);
			?>
		6. Object(对象)
		7. NULL(空值)
	【类型比较】
		1. ==  
			值比较
		2. ===
			完全比较
		注:
			== 和 === 都比较值的意思,但是后者还比较两者类型。
	【数组】
		1. 数值数组
			//定义   $cars=array("Volvo","BMW","Toyota");
			//访问   echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
		2. 关联数组
			//定义   $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); 
			//访问   echo "Peter is " . $age['Peter'] . " years old.";
	【常量】
		php可以利用define()定义常量
		 
		bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
		 该函数有三个参数:
			name:必选参数,常量名称,即标志符。
			value:必选参数,常量的值。
			case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
		
		在访问常量时
			1. 不需要用$符号
			2. 是全局变量域
	【超级全局变量】
		PHP 超级全局变量列表:
			$GLOBALS  是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
			$_SERVER  是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
			$_REQUEST 用于收集HTML表单提交的数据
			$_POST    用于收集表单数据
			$_GET     用于收集表单数据
			$_FILES
			$_ENV
			$_COOKIE
			$_SESSION
	【魔术常量】
	 PHP 向它运行的任何脚本提供了大量的预定义常量。
		__LINE__  		文件中的当前行号。
		__FILE__  		文件的完整路径和文件名
		__DIR__ 		文件所在的目录
		__FUNCTION__   	返回该函数被定义时的名字(区分大小写)
		__CLASS__ 		返回该类被定义时的名字(区分大小写)
		__TRAIT__ 		实现了代码复用的一个方法
		__METHOD__		返回该方法被定义时的名字(区分大小写)
		__NAMESPACE__ 	当前命名空间的名称
		
	【字符串变量】
		字符串连接
			用 . 将两个字符串连接起来
	
	【基本输出】
		1. echo
			可输出1个以上的字符串
		2. print
			只可输出1个字符串
			
		注:
			1. echo 执行速度比print快,echo无返回值,print返回值为1
			2. echo 和 print 在使用时都能 可加可不加 "()"
			3. 在输出的时候可用 "{}" 包裹在内
			
	【运算符】
		1. 和C语言 中基本一致。
		2. 支持三元运算符
		3. 组合比较符 <=>
			$c = $a <=> $b;
			解析如下:
				1)如果 $a > $b, 则 $c 的值为 1。
				2)如果 $a == $b, 则 $c 的值为 0。
				3)如果 $a < $b, 则 $c 的值为 -1。

三、PHP 控制结构
【条件控制】
1. if
和 C语言用法一样
2. switch
和 C语言用法一样
【循环控制】
1. while循环
2. for循环

	【注】
		while 和 for 循环均与 C语言用法一致
	3. foreach循环
		foreach ($array as $value)
		{
			要执行代码;
		}

四、PHP 区块化
【函数】
定义函数
需要在函数名前面 加上function 关键字,其他细节和 C语言用法一致
PHP 函数准则:
1)函数的名称应该提示出它的功能
2)函数名称以字母或下划线开头(不能以数字开头)
【命名空间】
1.声明
namespace + 模块层次1/模块层次2/ ... 等依次类推
2.使用
use + 模块层次 as 别名 这样别名就可以访问该命名空间内定义的类

五、面向对象
【类】
1.定义
和C++ 定义方式差不多。
2. 类中有$this指针变量
3. 创建对象
使用new 创建
例:
$runoob = new Site;
4. 构造函数
function __construct(参数表)
{
执行操作语句;
}

		例:
			function __construct( $par1, $par2 ) {
			   $this->url = $par1;
			   $this->title = $par2;
			}
	5. 析构函数
		function __destruct()
		{
			执行语句;
		}
	6. 继承
		class 子类名  extends 父类名{
		}
	7. 访问控制符
		可用访问控制符来对属性、方法进行控制 ,在其前加上访问控制符
		public:
		protected:
		private:
	8. 接口
		interface
		声明一个接口
		<?php

		// 声明一个'iTemplate'接口
		interface iTemplate
		{
			public function setVariable($name, $var);
			public function getHtml($template);
		}


		// 实现接口
		class Template implements iTemplate
		{
			private $vars = array();
		  
			public function setVariable($name, $var)
			{
				$this->vars[$name] = $var;
			}
		  
			public function getHtml($template)
			{
				foreach($this->vars as $name => $value) {
					$template = str_replace('{' . $name . '}', $value, $template);
				}
		 
				return $template;
			}
		}
	9.抽象类
		abstract class 类名
		该类就不能实例化,定义为了抽象类
		
	10. 常量
		利用 “const  + 变量名”  定义常量
	11. static 关键字
		1)声明类属性或方法为 static(静态),就可以不实例化类而直接访问。
		2)静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
		3)由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
		4)静态属性不可以由对象通过 -> 操作符来访问。
	12. final 关键字
		1)如果父类中的方法被声明为 final,则子类无法覆盖该方法。
		2)如果一个类被声明为 final,则不能被继承。
		<?php
		class BaseClass {
		   public function test() {
			   echo "BaseClass::test() called" . PHP_EOL;
		   }
		   
		   final public function moreTesting() {
			   echo "BaseClass::moreTesting() called"  . PHP_EOL;
		   }
		}

		class ChildClass extends BaseClass {
		   public function moreTesting() {
			   echo "ChildClass::moreTesting() called"  . PHP_EOL;
		   }
		}
		// 报错信息 Fatal error: Cannot override final method BaseClass::moreTesting()
		?>
	13. 调用父类构造方法
		1)PHP 不会在子类的构造方法中自动的调用父类的构造方法。
		2)要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。
		
		例:
		<?php
		class BaseClass {
		   function __construct() {
			   print "BaseClass 类中构造方法" . PHP_EOL;
		   }
		}
		class SubClass extends BaseClass {
		   function __construct() {
			   parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
			   print "SubClass 类中构造方法" . PHP_EOL;
		   }
		}
		class OtherSubClass extends BaseClass {
			// 继承 BaseClass 的构造方法
		}

		// 调用 BaseClass 构造方法
		$obj = new BaseClass();

		// 调用 BaseClass、SubClass 构造方法
		$obj = new SubClass();

		// 调用 BaseClass 构造方法
		$obj = new OtherSubClass();
		?>
posted @ 2020-03-16 18:40  Kernel001  阅读(216)  评论(0编辑  收藏  举报