PHP 基础知识代码总结
PHP 基础知识代码总结
转自:http://www.cnblogs.com/daomul/p/3357197.html
一、PHP基础语法 变量到数组
1 <?php
2 //phpinfo();
3
4 /* 变量
5 $a=1;//不分配空间
6 echo "\$a=".$a;
7 echo "<br/>";
8 var_dump($a);// 结果为NULL
9 echo "hello worrld";*/
10
11 /* int型最大能表示多大
12 echo "<br/>".PHP_INT_SIZE;
13 echo "<br/>".PHP_INT_MAX;//(2的31次方-1) 31:4*8-1个符号位
14 $a=-2147483648;
15 echo "<br/>".$a;
16 var_dump($a);//超过int型 范围 则会变为float类型*/
17
18 /* 布尔值
19 $d=0.0;
20 if(!$d){
21 echo "!!";
22 }*/
23 /* 浮点数
24 浮点数精度是14(从左边开始,第一个非0就是精度的开始)*/
25
26 /*字符型
27
28 单引号和双引号区别
29
30 $d=90;
31 $d1="$d";
32 $d2='$d';
33 echo $d1;
34 echo $d2;*/
35
36 //$a=7/5.1;
37 //echo $a;
38
39 # === 包括类型也相等
40 /*$a=2;
41 $b=2.0;
42 if($a!=$b)
43 {
44 echo"!=";
45 }
46 if($a!==$b)# !== 包括类型也不相等
47 {
48 echo "!==";
49 }*/
50
51 /* &&和||只要前面的一个为真假即不执行后一个
52 and 和 or 则不是
53 or的优先级比=低 所以
54 $e=false or true; //结果为false,因为此时$e先赋值为FALSE
55 var_dump($e);
56 $f=true and false;//结果为true,因为此时$e先赋值为true
57 var_dump($f);*/
58
59 /*字符串拼接
60 $a="1";$b="2";
61 $c=$a.$b;
62 */
63
64 /* 对象类型运算符
65
66 class Dog{}
67 $dog=new Dog;
68 var_dump($dog instanceof Dog);
69
70 $a=3;
71 echo $a++*3;//9*/
72
73 /*常量
74 define("TAX_INT",21);
75 #$TAX_INT=9;
76 echo TAX_INT;
77
78 const TAX_TWO=0.3;
79 echo "<br/>".TAX_TWO; */
80
81 /*
82 #require 'other.php';//不会判断是否重复,可能导致重复输出
83 require_once 'other.php';// 先判断是否有重复引入
84
85 #include '111other.php';
86 #include_once 'other.php';
87
88 #require 和include区别:
89 #include如果出现了错误会继续执行,
90 #而require则会终止程序
91
92 #echo "22";
93
94 $i=2;
95 $result=getNum($i);//传值,也可以传地址&
96 echo $result;*/
97
98 /*全局变量 global
99 $a=1;
100 function get()
101 {
102 global $a;//可作用于局部内了
103 $a++;
104 }
105 get();
106 echo $a;
107 */
108
109 /*数组初始化
110 //$array=array(1.2,12,"wrwe",true);
111 //echo count($array);
112
113 $arr=array("log"=>"daomul","mima"=>123);
114 echo count($arr)."<br/>";
115 foreach($arr as $key=>$val)
116 {
117 echo $key."=".$val."<br/>";
118 }
119
120 $arr2=array(""=>"32",1=>"fdsf",23,23);
121 echo $arr2[""]."<br/>";
122 echo $arr2[2]."<br/>";
123
124 #使用true作为下标,即是1 ,false :0; null:""
125
126 $arr3=array(123.4=>"arr3");
127 echo $arr3[123]."<br/>";
128
129 #显示详细数组信息
130 print_r($arr3); echo "<br/>";
131 var_dump($arr3);
132
133 #数组可以动态增长
134 $arr4=array(2,3);
135 echo $arr4[1]."<br/>";
136 $arr4[2]='11 22 333 444';
137 #echo $arr4[2];
138
139 #字符串的拆分 explode
140 $arr=explode(" ",$arr4[2]);
141 print_r($arr);
142
143 foreach($arr as $key=>$val)# (要循环的数组 as 数组下标变量)
144 {
145 echo "<br/>$key=>$val";
146 }
147
148 echo "<br/>".$arr[1];
149 unset($arr[1]);#销毁数组元素后,关键字下标不会被重新填充组合
150 print_r($arr);*/
151
152 /*数组运算 叠加
153 $a=array("a"=>12,"b"=>23);
154 $b=array("a"=>21,"c"=>43);
155 $a=$a+$b;
156 print_r($a);*/
157
158
159 ?>
二、数组
1 <html>
2 <head>
3 <meta http-equiv="content-type" content="text/html;charset=utf-8">
4 </head>
5 <body>
6 <h1> 同一个界面传输参数</h1>
7
8 <?php
9 /* 在 input中加 value="<?php echo $grades; ?>" 仿造百度搜索 */
10 error_reporting(E_ALL ^ E_NOTICE);
11 $grades=$_REQUEST['grade'];
12 $grade=explode(" ",$grades);
13 $all=0;
14 foreach($grade as $k=>$v)
15 {
16 $all+=$v;
17 }
18 ?>
19
20 <form action="test.php" method="post">
21 <input type="text" name="grade" value="<?php echo $grades; ?>"/>
22 <input type="submit" value="start"/>
23 </form>
24
25 <?php
26 echo "总的:".$all;
27 ?>
28 </body>
29 </html>
三、静态变量
1 <?php
2
3 class Child
4 {
5 public static $num=0;
6 public $name;
7 function __construct($name) //只有new之后才能调用
8 {
9 $this->name=$name;
10 }
11 //静态变量不能用this来访问
12 public function join()
13 {
14 self::$num+=1; //可以: Child::$num
15 echo $this->name."you";
16 }
17 }
18
19 $child1=new Child("k");
20 $child1->join();
21 $child1=new Child("a");
22 $child1->join();
23 $child1=new Child("b");
24 $child1->join();
25 echo "<br/>".Child::$num;
26 //类外只能是 类名::变量,
27 //类内就能两种
28 ?>
四、继承/封装/多态/抽象
1 /*class Child
2 {
3 public static $num=0;
4 public $name;
5 //构造方法
6 function __construct($name) //只有new之后才能调用
7 {
8 $this->name=$name;
9 }
10 //静态变量不能用this来访问
11 public function join($ifee)
12 {
13 self::ifee+=1; //可以: Child::$num
14 echo $this->name."you";
15 }
16 }
17
18 $child1=new Child("k");
19 $child1->join();
20 $child1=new Child("a");
21 $child1->join();
22 $child1=new Child("b");
23 $child1->join();
24 echo "<br/>".Child::$num;
25 //类外只能是 类名::变量,
26 //类内就能两种*/
27
28
29
30 //静态方法不能采用非静态变量,只能使用非静态变量
31 // 成员函数之间相互调用,需要用 $this->text();
32
33 //继承
34
35 //1、子类只能继承一个父类
36 // 如果想多重继承可以考虑通过多次继承:
37 /*class A{}
38 class B extends A{}
39 class C extends B{}*/
40
41 //2、父类中的构造方法,在创造一个子类的对象实例的时候不会默认自动调用
42 //3、 子类中调用父类的方法
43 //父类名::方法名(); / parent::方法名(); parent小写的
44
45 //覆盖:
46 # 子类的方法和父类的方法名称和参数个数完全一样,但不要求参数名相同
47 # 但是修饰符可以不同,但是子的范围〉=父类范围
48 # 父类是private则不能覆盖
49 /*class A{
50 function F(){
51 echo " 父类在此!<br/>";
52 }
53 }
54 class B extends A{}
55 class C extends B{
56 function F(){
57 echo "调用了父类了<br/>";
58 parent::F();
59 A::F();
60 }
61 }
62 $C1=new C();
63 $C1->F();*/
64
65 //抽象类:父类中不需要被实例化,只让子类继承,也可以被调用里面的;达到代码复用
66
67 #抽象类 abstract class name{}
68 #抽象方法 abstract public cry();
69 #抽象类不一定也有抽象方法
70 #类包含抽象方法则必须为抽象类
71 #子类继承抽象父类,则必须为抽象类或者实现继承的所有,所有!方法
72
73
74 //接口:interfacde 接口{//属性 //方法}
75 # 只能定义规范,让类去实现接口 ,不能自己实现,
76 # class c implements 接口{}
77 # 接口不能被实例化/接口能继承其他多个接口/不能不为public
78 # 一个类实现了一个接口,必须把接口以及其继承的接口的方法全部实现
79 # (1 多个平级的类都要实现某个功能,只是实现方式不同,没有继承关系,
80 #(2 项目经理定规范,让其他程序员实现
81 /*interface Stu
82 {
83 const A=90;
84 public function add();
85 }
86 interface Stu2{}
87
88 class MyStu implements Stu,Stu2
89 {
90 public function add()
91 {
92 echo "dddd".Stu::A."<br/>";
93 }
94 }
95 $mystu=new MyStu();
96 $mystu->add();
97 echo "OK".Stu::A; #获得接口中的常量*/
98
99 //final 使类中的方法不被覆盖
100 # final 不能修饰成员属性
101 /*class A
102 {
103 final public function get($salary)
104 {
105 return $salary*3;
106 }
107 }
108 class B extends A
109 {
110 public function get($sal)
111 {
112 return $sal*2;
113 }
114 }
115 $b=new B();
116 $b->get("21"); #Cannot override final method A::get() */
117
118 //const常量
119 # 要赋初始值;不能后面赋值;不能加$等修饰符
120 # self::A ; 类名::A ;接口名::A; 等方式获得常量A的值
五、文件操作以及错误处理
1 <?php
2
3 // 文件操作
4 /*处理错的方式1
5 if(!file_exists("file1.txt"))
6 {
7 echo "not here";
8 exit();
9 }
10 else
11 {
12 $fp=fopen("file1.txt","r");
13 echo "文件已打开";
14 fclose($fp);
15 }*/
16
17 /* 处理错的方式2
18 if(!file_exists("a.txt"))
19 {
20 die("wenjianbucunzai");
21 }
22 else
23 {}
24 echo "end";*/
25 /*处理错的方式1
26
27 file_exists("b.txt") or die("zhen de ");
28 echo "end";
29 */
30
31 //定义错误函数
32 /*function my_error($error,$err_message)
33 {
34 echo "<font size='5' color='red'> $error </front><br/>";//2
35 //echo "错误信息是:".$err_message;
36 exit();
37 }
38
39 //改变系统默认的错误处理函数(“用户自己定义的错误输出函数”,“错误类型”)
40 set_error_handler("my_error",E_WARNING);
41 $fp=fopen("aa.txt",'r');*/
42
43 //错误触发器
44
45 function my_error3($error,$err_message)
46 {
47 echo "错误号:".$error;
48 }
49 function my_error4($error,$err_message)
50 {
51 echo "big big!";
52 }
53 set_error_handler("my_error3",E_USER_WARNING);//
54 set_error_handler("my_error4",E_USER_ERROR);//致命错误,不继续执行
55 $age=140;
56 if($age>120)
57 {
58 //调用触发器的时候指定错误级别
59 trigger_error("输入的数字过大!",E_USER_ERROR);
60 //trigger_error("输入的数字过大!",E_USER_WARNING);
61 //exit();
62 }
63 echo "ok";
64 ?>
六、错误日志
1 <?php
2
3 //错误日志 php.ini 中的error_log的配置
4
5 function my_error5($error,$err_meaasge)
6 {
7 $err_info="错误信息:".$error."--".$err_meaasge;
8 //echo time();
9 //输出 当前日期
10 // 调整时区:默认时期是UTC和中国差8小时 PRC 或者Asia/Chongqing
11
12 date_default_timezone_set("PRC");
13
14 echo date("Y-m-d G-i-s");
15 echo "<br/>".$err_info;
16
17 #将错误存入系统文件中
18 error_log("时间是:".date("Y-m-d G-i-s")."-".$err_info."\r\n",3,"myerror.txt");//3个参数
19 }
20 set_error_handler("my_error5",E_USER_WARNING);
21 $i=1;
22 if($i<2)
23 {
24 trigger_error("输入的数字过小",E_USER_WARNING);
25 }
26 ?>
七、捕获异常
1 <?php
2
3 //处理异常
4 #注意事项:异常抛出之后,得代码不会被继续执行
5 #抛出异常之后如果没用处理则会报错
6 try
7 {
8 addUser("1a");
9 }
10 catch(Exception $e)
11 {
12 echo "失败信息:".$e->getMessage();//getLine()
13 #可以继续抛出 throw $e;
14 #也可以顶一个顶级异常处理
15 # $i=8/0 fopen("a.txt","r") 很难抛出异常
16 }
17
18 function addUser($user)
19 {
20 if($user=="a")
21 {
22 echo "登陆成功!";
23 }
24 else
25 {
26 throw new Exception("用户名错误!");
27 }
28
29 }
30
31 /*#顶级异常处理
32 function my_error()
33 {
34 echo "我是顶级异常处理!".e->getMeaasge();
35 }
36 set_error_handler("my_error");*/
37
38 ?>


浙公网安备 33010602011771号