php代码知识,PHP基础知识代码总结

一、PHP基础语法 变量到数组<?php

//phpinfo();

/* 变量

$a=1;//不分配空间

echo "\$a=".$a;

echo "
";

var_dump($a);//结果为NULL

echo "hello worrld";*/

/* int型最大能表示多大

echo "
".PHP_INT_SIZE;

echo "
".PHP_INT_MAX;//(2的31次方-1) 31:4*8-1个符号位

$a=-2147483648;

echo "
".$a;

var_dump($a);//超过int型 范围 则会变为float类型*/

/* 布尔值

$d=0.0;

if(!$d){

echo "!!";

}*/

/* 浮点数

浮点数精度是14(从左边开始,第一个非0就是精度的开始)*/

/*字符型

单引号和双引号区别

$d=90;

$d1="$d";

$d2='$d';

echo $d1;

echo $d2;*/

//$a=7/5.1;

//echo $a;

# === 包括类型也相等

/*$a=2;

$b=2.0;

if($a!=$b)

{

echo"!=";

}

if($a!==$b)# !== 包括类型也不相等

{

echo "!==";

}*/

/* &&和||只要前面的一个为真假即不执行后一个

and 和 or 则不是

or的优先级比=低 所以

$e=false or true; //结果为false,因为此时$e先赋值为FALSE

var_dump($e);

$f=true and false;//结果为true,因为此时$e先赋值为true

var_dump($f);*/

/*字符串拼接

$a="1";$b="2";

$c=$a.$b;

*/

/* 对象类型运算符

class Dog{}

$dog=new Dog;

var_dump($dog instanceof Dog);

$a=3;

echo $a++*3;//9*/

/*常量

define("TAX_INT",21);

#$TAX_INT=9;

echo TAX_INT;

const TAX_TWO=0.3;

echo "
".TAX_TWO; */

/*

#require 'other.php';//不会判断是否重复,可能导致重复输出

require_once 'other.php';// 先判断是否有重复引入

#include '111other.php';

#include_once 'other.php';

#require 和include区别:

#include如果出现了错误会继续执行,

#而require则会终止程序

#echo "22";

$i=2;

$result=getNum($i);//传值,也可以传地址&

echo $result;*/

/*全局变量 global

$a=1;

function get()

{

global $a;//可作用于局部内了

$a++;

}

get();

echo $a;

*/

/*数组初始化

//$array=array(1.2,12,"wrwe",true);

//echo count($array);

$arr=array("log"=>"daomul","mima"=>123);

echo count($arr)."
";

foreach($arr as $key=>$val)

{

echo $key."=".$val."
";

}

$arr2=array(""=>"32",1=>"fdsf",23,23);

echo $arr2[""]."
";

echo $arr2[2]."
";

#使用true作为下标,即是1 ,false :0; null:""

$arr3=array(123.4=>"arr3");

echo $arr3[123]."
";

#显示详细数组信息

print_r($arr3); echo "
";

var_dump($arr3);

#数组可以动态增长

$arr4=array(2,3);

echo $arr4[1]."
";

$arr4[2]='11 22 333 444';

#echo $arr4[2];

#字符串的拆分 explode

$arr=explode(" ",$arr4[2]);

print_r($arr);

foreach($arr as $key=>$val)# (要循环的数组 as 数组下标变量)

{

echo "
$key=>$val";

}

echo "
".$arr[1];

unset($arr[1]);#销毁数组元素后,关键字下标不会被重新填充组合

print_r($arr);*/

/*数组运算 叠加

$a=array("a"=>12,"b"=>23);

$b=array("a"=>21,"c"=>43);

$a=$a+$b;

print_r($a);*/

?>

二、数组

同一个界面传输参数

/* 在 input中加 value="<?php echo $grades; ?>" 仿造百度搜索 */

error_reporting(E_ALL ^ E_NOTICE);

$grades=$_REQUEST['grade'];

$grade=explode(" ",$grades);

$all=0;

foreach($grade as $k=>$v)

{

$all+=$v;

}

?>

echo "总的:".$all;

?>

三、静态变量<?php

class Child

{

public static $num=0;

public $name;

function __construct($name) //只有new之后才能调用

{

$this->name=$name;

}

//静态变量不能用this来访问

public function join()

{

self::$num+=1; //可以: Child::$num

echo $this->name."you";

}

}

$child1=new Child("k");

$child1->join();

$child1=new Child("a");

$child1->join();

$child1=new Child("b");

$child1->join();

echo "
".Child::$num;

//类外只能是 类名::变量,

//类内就能两种

?>

四、继承/封装/多态/抽象/*class Child

{

public static $num=0;

public $name;

//构造方法

function __construct($name) //只有new之后才能调用

{

$this->name=$name;

}

//静态变量不能用this来访问

public function join($ifee)

{

self::ifee+=1; //可以: Child::$num

echo $this->name."you";

}

}

$child1=new Child("k");

$child1->join();

$child1=new Child("a");

$child1->join();

$child1=new Child("b");

$child1->join();

echo "
".Child::$num;

//类外只能是 类名::变量,

//类内就能两种*/

//静态方法不能采用非静态变量,只能使用非静态变量

// 成员函数之间相互调用,需要用 $this->text();

//继承

//1、子类只能继承一个父类

// 如果想多重继承可以考虑通过多次继承:

/*class A{}

class B extends A{}

class C extends B{}*/

//2、父类中的构造方法,在创造一个子类的对象实例的时候不会默认自动调用

//3、 子类中调用父类的方法

//父类名::方法名(); / parent::方法名(); parent小写的

//覆盖:

# 子类的方法和父类的方法名称和参数个数完全一样,但不要求参数名相同

# 但是修饰符可以不同,但是子的范围〉=父类范围

# 父类是private则不能覆盖

/*class A{

function F(){

echo " 父类在此!
";

}

}

class B extends A{}

class C extends B{

function F(){

echo "调用了父类了
";

parent::F();

A::F();

}

}

$C1=new C();

$C1->F();*/

//抽象类:父类中不需要被实例化,只让子类继承,也可以被调用里面的;达到代码复用

#抽象类 abstract class name{}

#抽象方法 abstract public cry();

#抽象类不一定也有抽象方法

#类包含抽象方法则必须为抽象类

#子类继承抽象父类,则必须为抽象类或者实现继承的所有,所有!方法

//接口:interfacde 接口{//属性 //方法}

# 只能定义规范,让类去实现接口 ,不能自己实现,

# class c implements 接口{}

# 接口不能被实例化/接口能继承其他多个接口/不能不为public

# 一个类实现了一个接口,必须把接口以及其继承的接口的方法全部实现

# (1 多个平级的类都要实现某个功能,只是实现方式不同,没有继承关系,

#(2 项目经理定规范,让其他程序员实现

/*interface Stu

{

const A=90;

public function add();

}

interface Stu2{}

class MyStu implements Stu,Stu2

{

public function add()

{

echo "dddd".Stu::A."
";

}

}

$mystu=new MyStu();

$mystu->add();

echo "OK".Stu::A; #获得接口中的常量*/

//final 使类中的方法不被覆盖

# final 不能修饰成员属性

/*class A

{

final public function get($salary)

{

return $salary*3;

}

}

class B extends A

{

public function get($sal)

{

return $sal*2;

}

}

$b=new B();

$b->get("21"); #Cannot override final method A::get() */

//const常量

# 要赋初始值;不能后面赋值;不能加$等修饰符

# self::A ; 类名::A ;接口名::A; 等方式获得常量A的值

五、文件操作以及错误处理

// 文件操作

/*处理错的方式1

if(!file_exists("file1.txt"))

{

echo "not here";

exit();

}

else

{

$fp=fopen("file1.txt","r");

echo "文件已打开";

fclose($fp);

}*/

/* 处理错的方式2

if(!file_exists("a.txt"))

{

die("wenjianbucunzai");

}

else

{}

echo "end";*/

/*处理错的方式1

file_exists("b.txt") or die("zhen de ");

echo "end";

*/

//定义错误函数

/*function my_error($error,$err_message)

{

echo " $error
";//2

//echo "错误信息是:".$err_message;

exit();

}

//改变系统默认的错误处理函数(“用户自己定义的错误输出函数”,“错误类型”)

set_error_handler("my_error",E_WARNING);

$fp=fopen("aa.txt",'r');*/

//错误触发器

function my_error3($error,$err_message)

{

echo "错误号:".$error;

}

function my_error4($error,$err_message)

{

echo "big big!";

}

set_error_handler("my_error3",E_USER_WARNING);//

set_error_handler("my_error4",E_USER_ERROR);//致命错误,不继续执行

$age=140;

if($age>120)

{

//调用触发器的时候指定错误级别

trigger_error("输入的数字过大!",E_USER_ERROR);

//trigger_error("输入的数字过大!",E_USER_WARNING);

//exit();

}

echo "ok";

?>

六、错误日志<?php

//错误日志 php.ini 中的error_log的配置

function my_error5($error,$err_meaasge)

{

$err_info="错误信息:".$error."--".$err_meaasge;

//echo time();

//输出 当前日期

// 调整时区:默认时期是UTC和中国差8小时 PRC 或者Asia/Chongqing

date_default_timezone_set("PRC");

echo date("Y-m-d G-i-s");

echo "
".$err_info;

#将错误存入系统文件中

error_log("时间是:".date("Y-m-d G-i-s")."-".$err_info."\r\n",3,"myerror.txt");//3个参数

}

set_error_handler("my_error5",E_USER_WARNING);

$i=1;

if($i<2)

{

trigger_error("输入的数字过小",E_USER_WARNING);

}

?>

七、捕获异常<?php

//处理异常

#注意事项:异常抛出之后,得代码不会被继续执行

#抛出异常之后如果没用处理则会报错

try

{

addUser("1a");

}

catch(Exception $e)

{

echo "失败信息:".$e->getMessage();//getLine()

#可以继续抛出 throw $e;

#也可以顶一个顶级异常处理

# $i=8/0 fopen("a.txt","r") 很难抛出异常

}

function addUser($user)

{

if($user=="a")

{

echo "登陆成功!";

}

else

{

throw new Exception("用户名错误!");

}

}

/*#顶级异常处理

function my_error()

{

echo "我是顶级异常处理!".e->getMeaasge();

}

set_error_handler("my_error");*/

?>

相关推荐:

PHP调用ffmpeg对视频截图并拼接脚本

Yii2中的场景(scenario)和验证规则(rule)的详解

MixPHP、Yii和CodeIgniter的并发压力测试的小结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值