PHP基础知识——PHP学习笔记(一)

PHP基础知识——PHP学习笔记(一)
PHP表单处理——PHP学习笔记(二)
PHP进阶知识——PHP学习笔记(三)
PHP数据库——PHP学习笔记(四)
PHP接口实战教程——PHP+Mysql+ajax实现分页查询接口

PHP规范

PHP代码写在<?php?>

<?php
// 这里是PHP代码
?>

php注释

//单行注释
/*多行注释*/

pho输出

echo

可以输出一个或多个字符串,无返回值

print

只允许输出一个字符串,返回值总为 1

PHP变量

命名规范

1.变量名以 $ 符号开始,后面跟着变量的名称
2.变量名必须以字母或者下划线字符开
3.变量名只能包含字母数字字符以及下划线
4.变量不能有空格,变量区分大小写

创建php变量名

php不用申明变量,在第一次赋值的时候自动创建

局部作用域和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字在函数中调用全局变量

<?php 
	$x=1; // 全局变量 
	function test() 
	{ 
    	$y=2; // 局部变量 
    	echo "函数中调用x的值为:$x";
		echo "<br>"; 
    	echo "函数中调用y的值为:$y";
    	echo "<br>"; 
	} 
	test();
	echo "外部调用x的值为:$x"; 
	echo "<br>"; 
	echo "外部调用x的值为:$y"; 
	echo "<br>";
?>
输出结果为:
函数中调用x的值为:
函数中调用y的值为:2
外部调用x的值为:1
外部调用y的值为:
<?php 
	$x=1; // 全局变量
	function test() 
	{ 
    	global $x; // 局部变量 
    	echo "函数中调用x的值为:$x";
    	echo "<br>";
    	$x=2;
	} 
	test();
	echo "外部调用x的值为:$x";
?>
输出结果为:
函数中调用x的值为:1
外部调用x的值为:2

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

Static 作用域

当一个函数被完成时,局部变量会被删除,可使用Static关键字来保留局部变量

<?php
	function test()
	{
    	static $x=0;
    	echo $x;
    	$x++;
   		echo "<br>";    // 换行符
 	}
 	echo "第1次使用函数x为:";
	test();
	echo "第2次使用函数x为:";
	test();
	echo "第3次使用函数x为:";
	test();
?>
输出结果
第1次使用函数x为:0
第2次使用函数x为:1
第3次使用函数x为:2

超级全局变量

变量名 描述
$GLOBALS $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键
$_SERVER $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目$_SERVER中的元素
$_POST $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”
$_GET \ $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“get”

PHP常量

常量值被定义后,在脚本的其他任何地方都不能被改变
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
常量是全局的

设置常量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

参数 描述
name 必选参数,常量名称,即标志符
value 必选参数,常量的值
case_insensitive 可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感
<?php
	define("TEST", "不区分大小写",true);
	echo TEST;
	echo '<br>';
	echo test;
?>
输出结果
不区分大小写
不区分大小写

魔术常量

常量名 注释
__ LINE__ 文件中的当前行号
__ FILE__ 文件的完整路径和文件名
__ DIR__ 文件所在的目录
__ FUNCTION__ 函数名称
__ CLASS__ 类的名称
__ METHOD__ 类的方法名
__ NAMESPACE__ 当前命名空间的名称(区分大小写)

数据类型

函数返回变量的数据类型和值

var_dump()

类型 中文 注解
String 字符串 可放单引号和双引号中
Integer 整型 十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
Float 浮点型 带小数部分的数字,或是指数形式
Boolean 布尔型 TRUE 或 FALSE
Array 数组 一个变量中存储多个值
Object 对象 在 PHP 中,对象必须声明
NULL 空值 NULL 值表示变量没有值
<?php 
	$x = "hello"; //字符串
	var_dump($x);
	echo "<br>"; 
	$x = 10;//整形
	var_dump($x);
	echo "<br>"; 
	$x = 1.1;//浮点型
	var_dump($x);
	echo "<br>";
	$x = true; //布尔型
	var_dump($x);
	echo "<br>";
	$x = array(1,2,3); //数组
	var_dump($x);
	echo "<br>";
	$y; //空值
	var_dump($y);
?>
输出结果:
E:\WebProject\phptest\test.php:3:string 'hello' (length=5
E:\WebProject\phptest\test.php:6:int 1
E:\WebProject\phptest\test.php:9:float 1.
E:\WebProject\phptest\test.php:12:boolean tru
E:\WebProject\phptest\test.php:15:
array (size=3)
 0 => int 1
 1 => int 2
 2 => int 3
 E:\WebProject\phptest\test.php:18:null

字符串

1.字符串用 . 连接
2.strlen() 函数返回字符串的长度(字符数)
3.strpos("","") 函数用于在字符串内查找一个字符或一段指定的文本,如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE

<?php 
	echo strpos("Hello world!","world"); 
?>
输出6

数组

创建数组
1.自动分配 ID 键

$变量名=array("","","")

2.人工分配 ID 键

$变量名[0]=""
$变量名[1]=""
$变量名[2]=""

3.获取数组的长度
count() 函数用于返回数组的长度
4.关联数组

$变量名=array(“key”=>“value”,“key”=>“value”,“key”=>“value”);
or
$变量名[key]=“value”
$变量名[key]=“value”
$变量名[key]=“value”

5.遍历关联数组

foreach($数组变量名 as $x=>$x_value){}

<?php
	$score=array("NO.1"=>"100","NO.2"=>"90","NO.3"=>"80");
	foreach($score as $x=>$x_value)
	{
    	echo $x . "的成绩是" . $x_value;
    	echo "<br>";
	}
?>
输出结果
NO.1的成绩是100
NO.2的成绩是90
NO.3的成绩是80

6.数组排序

函数 注解
sort() 对数组进行升序排列
rsort() 对数组进行降序排列
asort() 根据关联数组的值,对数组进行升序排列
ksort() 根据关联数组的键,对数组进行升序排列
arsort() 根据关联数组的值,对数组进行降序排列
krsort() 根据关联数组的键,对数组进行降序排列

类型比较

1.松散比较: == ,只比较值,不比较类型。
2.严格比较:=== ,除了比较值,也比较类型
3.比较运算符中>=正确表达,返回布尔值
4.优先级: && > = > and
5.优先级: || > = > or

命名空间

引入的多个文件中可能存在同名的类、函数、常量,就会报错

定义命名空间

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

<?php  
	namespace MyProject;

	const CONNECT_OK = 1;//常量
	class Connection { /* ... */ }//类
	function connect() { /* ... */}//函数
?>  

空间成员

1.空间只影响类、函数、常量(const)
2.其他代码不受影响

子空间以及访问方式

子空间命名

<?php
namespace MyProject\Sub\Level;  //声明分层次的单个命名空间
const CONNECT_OK = 1;
class Connection { /* ... */ }
function Connect() { /* ... */  
?>

访问方式

  • 非限定访问:访问当前空间的成员
  • 限定访问:只能访问当前空间的子空间的成员 子文件夹\元素名
  • 完全限定:可以访问其他空间的所有成员 \空间名\元素名

use 空间名\空间名 【as 别名】:将指定空间引入到当前空间。同可以使用as关键字为被引入的空间起个别名

面向对象

类的定义以及实例化

1.类使用 class 关键字后加上类名定义
2.类名后的一对大括号({})内可以定义变量和方法
3.类的变量使用 var 来声明, 变量也可以初始化值。
4.函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问
5.变量 $this 代表自身的对象。->指向成员变量名称
6.调用成员函数用->

<?php
	class Car{
  	/* 成员变量 */
 	 var $cloor;
  	/* 成员函数 */
 	function setCloor($col){
    	$this->cloor = $col;
  	}
  	function showCloor(){
   		echo $this->cloor;
  	}
	}
	$Volvo=new Car;
	$Volvo->setCloor("red");
	$Volvo->showCloor();
?>

php构造函数

要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用

void __construct ([ mixed $args [, $… ]] )

<?php
	class Car{
  	/* 成员变量 */
 	 var $cloor;
  	/* 成员函数 */
 	function __construct($col){
   		$this->cloor = $col;
	}
  	function showCloor(){
   		echo $this->cloor;
  	}
	}
	$Volvo=new Car("red");
	$Volvo->showCloor();
?>

析构函数

当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函

void __destruct ( void )

类的继承

访问控制

  • public(公有):公有的类成员可以在任何地方被访问。
  • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
  • private(私有):私有的类成员则只能被其定义所在的类访问。

继承
PHP 不支持多继承

<?php
	class Car{
 		public $cloor;
 		function __construct($col){
   			$this->cloor = $col;
		}
  		function showCloor(){
   			echo $this->cloor;
  		}
	}
	class Scar extends Car{
		public $speed;
		function __construct($col,$spd){
			$this->cloor = $col;
			$this->speed = $spd;
		}
		function showSpeed(){
			echo "<br />".$this->speed;
		}
	}
	$Volvo=new SCar("red",55);
	$Volvo->showCloor();
	$Volvo->showSpeed();
?>

接口

1.使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容
2.接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的
3.接口中定义的所有方法都必须是公有,这是接口的特性
4.要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

<?php
	//定义接口
	interface interface_1
	{
   	 	public function dosomething();
	}
	// 实现接口
	class interface_2 implements interface_1
	{
    	public function dosomething()
    	{
    		/**/
    	}
	}
?>

Static 关键字

1.声明类属性或方法为 static(静态),就可以不实例化类而直接访问,类名: :方法名
2.静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)
3.由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用
4.静态属性不可以由对象通过 -> 操作符来访问。

<?php
	class test{
  		public static $my_static = 'test';
  		public function showValue() {
     		return self::$my_static;
     	}
	}
	echo test::$my_static . "<br />";
	$test = new test();
	echo  $test->showValue();
?> 

Final 关键字

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

调用父类构造方法

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

<?php
	class parentclass{
		function __construct(){
			echo "这是父类的构造方法<br />";
		}
	}
	class childclass extends parentclass{
		function __construct(){
			parent::__construct();
			echo "这是子类的构造方法";
		}
	}
	$obj=new childclass;
?> 
输出结果
这是父类的构造方法
这是子类的构造方法
发布了20 篇原创文章 · 获赞 25 · 访问量 7473

猜你喜欢

转载自blog.csdn.net/qq_41866776/article/details/90729538