PHP学习

一、简介

  • PHP是在服务器端运行的脚本语言,可以快速写成动态的网页;常用的有LAMP与WAMP组合
  • 静态网页与动态网页

静态网页特点:
1、每个网页内容都在服务器上,每个网页都是独立的存在;
2、容易被搜索引擎检索。相对稳定;
3.、没有数据库支持,维护难度大;
4、交互性差,功能方面限制大;
动态网页特点:
1、交互性好,会根据用户的要求进行改变;
2、自动更新;
3、不同用户访问同一网页会出现不同页面;

二、PHP语法

  1. php标记:
<%代码%>  //ASP风格
<?PHP代码?> //简短
<script language="php" > PHP代码 </script>  //脚本
<>php   php代码  ?>  //标准

在这里插入图片描述

  • PHP注释:
//单行注释  <?php  //代码  ?>
/* */  多行注释 <?php  /*代码*/ ?>
# 风格注释  <?php  #代码 ?>

在这里插入图片描述

  • PHP语句结束符:
    结束符通常为英文的分号 " ; "
<?php
echo "hello world" ;
?>

在这里插入图片描述

  • PHP输出
echo "啦啦啦" ;
print("啦啦啦");
print_r();//打印变量
var_dump(); //输出数据类型与长度
$admin = "lalalala";
print_r($admin);
echo '<br>';
var_dump($admin);

在这里插入图片描述

  1. 变量

变量可以改变;
变量存在名字;
变量可以储存数据;
变量可以通过名字访问数据;
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
【 PHP 语句和 PHP 变量都是区分大小写的】

$admin = 1;
echo "<br>";
echo $admin ;
//删除用unset()来进行销毁,isset来进行检测是否设置为null;
  • PHP变量作用域
<?php
header("Content-Type:text/html;charset=utf-8"); //防止出现乱码

 $x = 1 ;//全局变量

function mytest() 
{
 $y = 2 ;  //局部变量
 echo "输出内部变量";
 echo "<br>";
 echo "变量x为:$x";
 echo "<br>";
 echo "变量y为:$y";
  echo "<br>";
 }
mytest();
 echo "输出外部变量";
  echo "<br>";
 echo "变量x为:$x";
 echo '<br>';
 echo "变量y为:$y";


//除函数外,全局变量可以被任意调用,函数不能调用,防止变量污染;

?>

在这里插入图片描述

<?php

$x = 1 ;
$y = 2;
function test()
{
  
  global $x, $y;
  $y = $x + $y;

}

test();

echo $y;

//添加global 来调用全局变量


?>
<?php 

$x =1 ;
$y = 2;

function test1()
{
   $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'] ;

}

test1();

echo $y;

?>
//将全局变量放入$GLOBALS['index']数组中,进行运算;也可以更新变量
<?php
function myTest()
{
    static $x=0; //声明关键字,不被删除
    echo $x;
    $x++;
    echo PHP_EOL;    // 换行符
}
 
myTest();
myTest();
myTest(); // 0  1  2
?>
<?php
function test($x)
{
echo $x;
}
test(1);
?>
  • 预定义变量(数组):
$_GET:  //获取表单以get方式提交数据;
$_POST://POS提交的数据;
$_REQUEST://GET与POST的数据都会保存;
$GLOBALS:PHP中的全局变量;
$_SERVER:服务器信息;
$_SESSION:session会话数据;
$_COOKIE:cookie数据;
$_ENV:环境信息;
$_FILES:用户上传的文件信息;

  • 传值与传值
//传值
<?php
$a =1 ;
$b = $a;
$b = 2;
echo $a,$b;// a==1 ;b==2
?>
//传址
<?php
$a = 1;
$b = & $a;
$b = 2;
echo $a,$b; //a==2 ; b==2

?>
  • 变量定义
<?php
define('name','aa');//定义常量
define('pi',3.14,true);//true 表示不区分大小写,默认是false; 常量名默认大写

define('%-%','aa');
echo constant(%-%);//特殊字符

const NAME = 'aa';

?>
  • 预定义/魔术变量
//预定义
echo PHP_VERSION,'<br>';  //版本号
echo PHP_OS,'<br>' ;     //操作系统
echo PHP_INT_MAX,'<br>';  //整形的最大值

//魔术常量
echo _LINE_,'<br>';  //获取当前行号
echo _FILE_,'<br>';  //文件的完整路径 和文件名
echo _DIR_,'<br>';//文件的所在目录
echo _FUNCTION_,','<br>';//返回函数定义时的名字
echo _CLASS_,'<br>';//返回类定义时的名字
  • 数据类型
<?php
$x=111;
var_dump($x);
echo '<br>';

$y= -111; //负数
var_dump($y);
echo '<br>';

$y= 010; //八进制
var_dump($y);
echo '<br>';


$y= 0x11; //十六进制
var_dump($y);
echo '<br>';

$x = 10.365; //浮点数
var_dump($x);
echo "<br>";

$name = 'aaaaa';        //字符串
echo "名字是$name",'<br>';
echo '名字是$name','<br>';

echo '毛主席说:\'数风流人物,还看今朝\'','<br>'; //特殊符号

$c=array("aaa","ddddd","qqqqqqqq");//数组
var_dump($c); //返回各个字段的数据类型与值


echo decbin(123),'<br>';//十进制转二进制
echo bindec(1111;//二进制转十进制
echo dechex(12);十进制转十六进制
//谁转谁在前,目标进制在后;
?>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • PHP EOF
$name="runoob";
$a= <<<EOF
        "abc"$name
        "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
  1. 必须后接分号,否则编译通不过。
  2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
    注意:
    1.以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
    2.开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
    3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;

echo strlen($txt1);
echo strpos($txt2,'a');

?>

在这里插入图片描述

  • 运算符

<?php 
//整除 PHP7+
var_dump(intdiv(10,3));//向下取整  

$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world! 

//数组运算
$x = array("a" => "red", "b" => "green"); 
$y = array("c" => "blue", "d" => "yellow"); 
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z)var_dump($x == $y);//相同的键值对 返回true
var_dump($x === $y);//相同的键值对且类型相同  返回true
var_dump($x != $y);//不等为真
var_dump($x <> $y);//不等为真
var_dump($x !== $y);// 不等与为true

//三元运算符
$test = 'aaaa';
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;

//组合比较符(<=>) PHP7+版本  不止限于数值的比较
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1


?>

在这里插入图片描述

  • 循环
<?php
$a = rand(1,99);

if($a > 85)
   echo "不错哦",'<br>';
elseif ( $a >70) {
	echo "加油",'<br>';	
}
else 
	echo "挂了";
echo '<br>';

?>
<?php
$a = rand(1,9);

switch ($a) {
	case '1':
		echo "lalala";
		break;
	
	case '3':
		echo "qqq";
		break;


		case '5':
		echo "wwww";
		break;

		case '7':
		echo "fsdff";
		break;

	default:
		echo  "区别";
		break;
}
//如果只有case,不添加break 或 continue ,代码将会从进入点一直向下执行,知道结束
?>
for ($a = 0 ; $a < 7 ; $a++)
{
	echo $a = $a +$a;
	echo '<br>';  
}
//0  2  6

<?php
$x=array("Google","Runoob","Taobao"); //froeach 进行数组的遍历
foreach ($x as $value)
{
    echo $value . PHP_EOL;
}
?>


<?php
$y = 10;
$a = rand(1,9)do{   
    $a = $y + $a ;
    echo $a;
    echo "<br>";

}while ( $a<7) 
?>
//while---do 循环用法类似
  • 数组
//数组
$car  = array('奔驰','宝马' );
echo "$car[0]<br>$car[1]";

//关联数组
$age  = array('啊啊' =>"12" ,'拉拉'=>'11' );
echo "aa".$age['啊啊']."岁"

//遍历关联数组
$age  = array('啊啊' =>"12" ,'拉拉'=>'11','哦哦'=>'10');
foreach ($age as $x => $x_value) {
	echo $x,$x_value;
	echo '<br>';
}


//数组升序排列
$age  = array('啊啊' ,'拉拉','哦哦');
sort($age); //rsort() --进行降序排序
print_r($age);

//根据值进行数组的升序排列
$age  = array('啊啊' =>"12" ,'拉拉'=>'11','哦哦'=>'10');
asort($age); //arsort()  降序
print_r($age);

//根据键进行升序排列
$age  = array('啊啊' =>"12" ,'拉拉'=>'11','哦哦'=>'10');
ksort($age); //krsort() -进行降序排列
print_r($age);

  • 超级全局变量

$GLOBALS

$x = 1 ;
$y = 2 ;

function action()
{

	$GLOBALS['z'] = $GLOBALS['x'] +$GLOBALS['y'] ;
}

action();
echo $z;

//在globals中的为全局变量,在任意位置可任意进行调用

$_SERVER

//_SERVER是包含了诸如头信息、路径以及脚本位置等信息
echo $_SERVER['PHP_SELF'],'<br>';   //当前执行脚本的文件名
echo $_SERVER['GATEWAY_INTERFACE'],'<br>';//服务器使用的CGL的规范版本 
echo $_SERVER['SERVER_NAME'],'<br>';//当前服务器的主机名
echo $_SERVER['SERVER_ADDR'],'<br>'; //当前脚本所在的服务器的IP地址
echo $_SERVER['SERVER_SOFTWARE'],'<br>'; //服务器表示字符串,在响应请求的头信息中
echo $_SERVER['SERVER_PROTOCOL'],'<br>';//请求页面是通信协议的名称与版本 
echo $_SERVER['HTTP_HOST'],'<br>'; //当前请求头的内容
echo $_SERVER['HTTP_USER_AGENT'],'<br>';
echo $_SERVER['SCRIPT_NAME'],'<br>'; //当前脚本路径

$_SERVER[‘PHP_SELF’]: 当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER[‘PHP_SELF’] 将得到 /test.php/foo.bar。FILE 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用

$_SERVER[‘GATEWAY_INTERFACE’]: 服务器使用的 CGI 规范的版本;例如,“CGI/1.1”。
$_SERVER[‘SERVER_ADDR’]: 当前运行脚本所在的服务器的 IP 地址。
$_SERVER[‘SERVER_NAME’] :当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com)
$_SERVER[‘SERVER_SOFTWARE’]: 服务器标识字符串,在响应请求时的头信息中给出。 (如:Apache/2.2.24)
$_SERVER[‘SERVER_PROTOCOL’] :请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
$_SERVER[‘REQUEST_METHOD’] :访问页面使用的请求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。
$_SERVER[‘REQUEST_TIME’] : 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)
$_SERVER[‘QUERY_STRING’] :query string(查询字符串),如果有的话,通过它进行页面访问。
$_SERVER[‘HTTP_ACCEPT’] 当前请求头中 Accept: 项的内容,如果存在的话。
$_SERVER[‘HTTP_ACCEPT_CHARSET’] 当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:“iso-8859-1,*,utf-8”。
$_SERVER[‘HTTP_HOST’] 当前请求头中 Host: 项的内容,如果存在的话。
$_SERVER[‘HTTP_REFERER’] 引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。)
$_SERVER[‘HTTPS’] 如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
$_SERVER[‘REMOTE_ADDR’] 浏览当前页面的用户的 IP 地址。
$_SERVER[‘REMOTE_HOST’] 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。
$_SERVER[‘REMOTE_PORT’] 用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER[‘SCRIPT_FILENAME’] 当前执行脚本的绝对路径。
$_SERVER[‘SERVER_ADMIN’] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:someone@runoob.com)
$_SERVER[‘SERVER_PORT’] Web 服务器使用的端口。默认值为 “80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
$_SERVER[‘SERVER_SIGNATURE’] 包含了服务器版本和虚拟主机名的字符串。
$_SERVER[‘PATH_TRANSLATED’] 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
$_SERVER[‘SCRIPT_NAME’] 包含当前脚本的路径。这在页面需要指向自己时非常有用。FILE 常量包含当前脚本(例如包含文件)的完整路径和文件名。
$_SERVER[‘SCRIPT_URI’] URI 用来指定要访问的页面。例如 “/index.html”。

$_REQUEST

//用于收集HTML表单中提交的数据
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
 
<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

$_POST

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
 
<?php 
$name = $_POST['fname']; 
echo $name; 
?>

三、PHP表单

  • 获取表单信息
<?php 
$uname = $_POST['uname'];
$passward = $_POST['passward'];

echo $uname;echo '<br>';
echo $passward;

<!DOCTYPE html>
<html>
<head>
	<title>测试</title>
	<meta charset="utf-8">
</head>
<body>

  <form action="welcom.php" method="post">
名字:<input type="text" name="uname">
密码 :<input type="text" name="passward">
<input type="submit" value="提交">
  </form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

  • 获取下拉菜单数据
<?php
header("Content-type:text/html;charset=utf-8");

$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
if($q) {
        if($q =='a') {
                echo '<br>http://www.a.com';
        } else if($q =='GOOGLE') {
                echo 'Google 搜索<br>http://www.google.com';
        } else if($q =='TAOBAO') {
                echo '淘宝<br>http://www.taobao.com';
        }
} else {
?>
<form action="" method="get"> 
    <select name="q">
    <option value="">选择一个站点:</option>
    <option value="RUNOOB">Runoob</option>
    <option value="GOOGLE">Google</option>
    <option value="TAOBAO">Taobao</option>
    </select>
    <input type="submit" value="提交">
    </form>
<?php
}
?>


//
<?php
$q = isset($_POST['q'])? $_POST['q'] : '';
if(is_array($q)) {
    $sites = array(
            'a' => 'a: http://www.a.com',
            'GOOGLE' => 'Google 搜索: http://www.google.com',
            'TAOBAO' => '淘宝: http://www.taobao.com',
    );
    foreach($q as $val) {
        // PHP_EOL 为常量,用于换行
        echo $sites[$val] . PHP_EOL;
    }
      
} else {
?>
<form action="" method="post"> 
    <select multiple="multiple" name="q[]">
    <option value="">选择一个站点:</option>
    <option value="a">a</option>
    <option value="GOOGLE">Google</option>
    <option value="TAOBAO">Taobao</option>
    </select>
    <input type="submit" value="提交">
    </form>
<?php
}
?>

<input type="radio" name="q" value="TAOBAO" />Taobao  //单选按钮
<input type="checkbox" name="q" value="TAOBAO"> Taobao<br> //复选框 

在这里插入图片描述
在这里插入图片描述

四、文件

  • 文件包含

文件包含的四种类型:
1、include :生成一个警告,会继续执行代码
2、require:生成一个警告,会停止执行后续代码
3、include_once:会进行判断文件是否被包含,一个文件只被包含一次
4、require_once:同inclide_once

//下包含
##welcom.php代码
 <?php
  $name = 'tom';
  $age = '55';
  $sex = 'man';
  include 'tt.php';

##tt.php代码
<?php
echo $name,$age ,$sex ;



//上包含
##welcom.php代码
 <?php
  $name = 'tom';
  $age = '55';
  $sex = 'man';
##tt.php代码
<?php
include 'welcom.php';
echo $name,$age ,$sex ;


//require、include_once
 require 'welcom.php';
 require 'welcom.php';

include_once 'welcom.php';//前面已经引用文件,不在引用

  • 文件的基础操作

1、文件打开:fopen() :在PHP中打开文件【必须配合fclose()使用,否则文件会被锁定】
fopen(“文件路径”,“打开模式”);

打开模式:

模式描述
r只读
r+读写
w只写
w+读写
a追加
a+读与追加
b二进制
x只写,如果文件按存在,返回FALSE
x+读写,如果文件按存在,返回FALSE

【w/w+/a 文件不存在时创建文件】

2、feof():检测文件是否到达末尾

3、fgets():逐行读取文件

 <?php

$file = fopen("test.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))
{
    echo fgets($file). "<br>";
}
fclose($file);

在这里插入图片描述
在这里插入图片描述

4、fgetc():逐字符的读取文件

5、file():一次读取整个文件

 var_dump(file("test.txt"));
 echo '<br>';
 print_r(file("test.txt"))

在这里插入图片描述

6、file_get_contents():

echo  file_get_contents("./test.txt");

五、面向对象

  • 基础内容

1、类:定义了一个事物的抽象特点,类的定义包含了数据的形式以及对数据的操作
2、对象:类的实例
3、成员变量:在类内部,该变量的值对外不可见,但是可以通过成员函数访问,在实例化为对象后,该变量可以称为对象的属性;
4、继承:子承父类;可以在一个已存在的类的基础上来进行,把这个类定义的内容作为自己的内容,并加入新的内容
5、父类:可以被其他类继承
6、 子类:继承其他类,派生类
7、 多态:指相同的函数或方法作用于多种类型的对象上并获得不同的结果,不同的对象可以产生不同的结果
8、重载:同名不同参的函数或方法互相称之为重载函数或方法
9、抽象函数:指具有一致性的数据结构和行为的对象抽象成类,他反应了与应用有关的性质,任何类的划分都是主观的,但必须与具体的应用有关;任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。定义为抽象的类不能被实例化。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法应该声明为受保护的或者公有的,而不能定义为私有的。
10、封装:将客体与行为绑定在一起
11、构造函数:创建对象时初始化对象,与new连用
12、析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。析构函数:【function __destruct() { print "销毁 " . $this->name . “\n”; }】

  • 关键字说明:

1、类:class
2、对象:object
3、实例化:new
4、类成员:member

///
类的定义
///
<?php
class MyTest{
  var $anme;    //成员变量的定义
  var $age;
//成员函数的定义
  function my($a,$b){
     echo $this->name = $a;
     echo "<br>";
     echo $this->age = $b;
  }
}
$q = new mytest;  //实体化
$q->my("aa",12);  //调用函数
echo "<br>";
echo $q->name;
echo "<br>";
echo $q->age;

echo "<br>";
echo $q->age = 2000; //修改变量的值

unset($q->name); //删除name
echo $q->name;  

class  My{

}
$b= new My();    //创建一个名为My类的对象
$b = new My;
var_dump($b);




fro循环
///
class mytest{

function my(){
for ($i=0; $i <=5 ; $i++) { 
	print($i);
       }
    }
}
$q = new mytest;
$q->my();

///
self用法
//
#1、self可以访问本类中的静态属性和静态方法,可以访问父类的静态属性和静态方法
#2、用SELF可以不用实例化
#3、SELF是指向类本身,一般指向类中的静态变量
class mytest{

   static function a(){
   echo "我爱学习";
  self::b();
   }
static function b(){
	self::a();
  }
}
mytest::a();



类常量
#解释操作符 “::” :调用内部静态变量或者是类之间调用,访问类的常量必须用双冒号
//
class mytest{

	const PT = 3.14;
}
echo mytest::PT;

$b = new mytest;
echo $b::PT;


/
构造函数
#构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用

class mytest{
//成员变量
var $name ;
var $url ;
//构造函数
function __construct($a,$b){
   $this->name = $a ;
   $this->url  = $b ;

}

function setname($a){
	 $this->name = $a ;
}

function seturl($b){
	 $this->url= $b ;
}


function getname(){
	echo $this->name ;
}

function geturl(){
echo $this->url  ;
}

}
$q = new mytest('www.taobao.com', '淘宝');
$w = new mytest('www.google.com', 'Google 搜索');

$q->getname();
$q->geturl();

$w->getname();



封装
#public:方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。
#protected:本类和子类可以访问,外部对象不可以调用。在整个继承链上使用;
#private:只能在本类访问,子类与外部对象都不可能调用。经过private标记的方法或者属性可以在继承类中重新定义,每一个类只能看到它自己定义的私有方法。
///
class my{
  function on(){
  	$this->show();
  }
  function off(){
  }
private function show (){
	var_dump("阿凯该");
}
}
$a = new my;
echo $a->on();
//当我们直接访问private的函数时,会报错,无法访问,所以不知道类中又哪些东西


///
继承【 class xx   extends  xxx#继承时,父类中的final、private 关键字无法继承
//
class my{
	
public $name = "aa";
private $age = 12;
private $birthday = "atsats";

function a(){
	echo $this->name;
    }
}

class mt extends my {
  function test(){
  	$q = new my;
  	echo $q->a();
  }
}
$b= new mt;
$b->test();



多态
///
class a{
	function fun(){
		echo "xuexi";
	}
}

class b extends a{

 function fun(){
 	echo "buxuwle";
 }

}

class c extends a{
	function fun(){
		echo "shangbanle";
	}
}

function a($num){ 
   // $num->fun();
 if ($num instanceof a) {
 	$num->fun();
 }
}
a(new c);


//
重写
/

class father{

	function fun(){
		echo "皮?";
	}

	function work(){
		echo "工作";
	}
}

class son extends father{

	function fun(){
		echo "不皮了。。。"; //进行覆盖
	}

	function work(){
		parent::work(); //调用父类的函数
		echo "<br>";
		echo "下班了!"; //添加覆盖
	}
}

$a = new son;
$a->fun();
$a->work();

$b = new father;
$b->fun();
$b->work();


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

//实现接口
class BlueLight implements Light
{
    function show()
    {
        echo '灯光是蓝色。' . '<br>';
    }
}

class RedLight implements Light
{
    function show()
    {
        echo '灯光是红色。' . '<br>';
    }
}

class Demo
{
    function show()
    {
        echo '我不是接口' . '<br>';
    }
}

class User
{
    
    function openLight(Light $obj)
    {
        $obj->show();
    }
}

$user = new User();

$blueLight = new BlueLight();
$redLight = new RedLight();
$demo = new Demo();

$user->openLight($blueLight);//灯光是蓝色。
$user->openLight($redLight);//灯光是红色。
$user->openLight($demo);//报错,非继承自Light类


六、命名空间

  • 简述

PHP 命名空间可以解决以下两类问题:
1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2、为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
命名空间就是包,用来存放项目中的类、函数、常量;通过namespace来声明命名空间

  • 基础语法

定义命名空间

namespace chian ;
function a()
{
	echo "1";
}l'l
namespace usa ;

function a(){
	echo "2";
}


a();
echo "<br>";
\chian\a();
echo "<br>";
\usa\a();





七、PHP与MYSQLI


mysqli
///
<?php 

 $severname = "localhost";
 $username = "root";
 $password = "root";


//连接数据库
 $conn = mysqli_connect($severname , $username , $password);
 if (!$conn) {
 	echo "失败".mysqli_connect_error;echo "<br>";
 }else {echo "成功";}echo "<br>";


//创建数据库
$sql = "CREATE DATABASE sis2017";

if (mysqli_query($conn,$sql)){

echo "成功";echo "<br>";

}else {echo "失败";}
echo "<br>";



//选择数据库
mysqli_select_db($conn,'sis2017');
var_dump($conn);
echo "<br>";

//创建表
$sql1 = "CREATE TABLE student (id int auto_increment primary key not NULL  ,
name varchar(20),sex  varchar(10),email varchar(20) ,reg_data TIMESTAMP)";
if ($conn->query($sql1) == TRUE){
	echo "创建成功";echo "<br>";
}else {echo "创建失败".$conn->error;}
echo "<br>";

//插入数据
$sql2 = "insert into student(name,sex,email) values('a','man','daad@.com')";

if(mysqli_multi_query($conn ,$sql2)){
	echo "输入成功";
}else {echo "输入失败";}echo "<br>";



//修改数据
$sql3 = "UPDATE student SET name = 'b',sex ='woman',email = 'bbbb@.com' WHERE id = 1 ";
if(mysqli_multi_query($conn,$sql3)){

	echo "修改成功";echo "<br>";
}else {echo "修改失败";}echo "<br>";



//删除数据
$sql4 = "DELETE FROM student WHERE id = 4";
if (mysqli_query($conn,$sql4)){
echo "删除成功";echo '<br>';
}else {echo '失败';}echo "<br>";


//读取数据

$sql5 = "SELECT * FROM student ";
$result = $conn->query($sql5);
if($result->num_rows>0){
	while ($row = $result->fetch_assoc()) {
		echo "id:".$row["id"]."  name :".$row["name"]; echo "<br>";
	}
}else {echo "无";}


//关闭连接

mysqli_close($conn);


?>

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值