• php基础笔记


    1、变量的操作

    1)、变量的四个操作:赋值、取值、判断变量里是否有值(isset())、销毁变量(unset()) 2)、值传递与引用传递:引用传递(&) $var = 12; $var1 = &$var 3)、预定义变量(系统提前定义好的变量):$POST(接受前端POST来的数据)、$GET(接受前端GET来的数据)、$_REQUEST(接受前端GET或者POST来的数据) 4)、可变变量:$v = 10;$str = 'v';echo $$str(可变变量); //10 5)、常量:define、const两种定义方法如:const var = 100;define('var',100); 取常量的值:echo constant("var")或者直接写var 6)、常量的判断:if(define("var")){}即可

    2、数组的操作

    1)、$data = ['a'=>123,'b'=>234,'c'=>345]; 2)、另外一种定义数组的方式:array $data = array('a'=>123,'b'=456,'c'=>789)

    3)、数组的增删改查 $data['d']= 5 增 $data['b']= 6 改 unset($data['c']) 删 echo $data['a'] 查

    2、单引号与双引号的区别: 单引号不会判断里面是否有变量,全部原样输出,但是html可以解决 双引号会判断,并且输出变量的值 例如:echo '$var'; $var echo ' '; 换行 echo "$var1"; 12

    3、输出的格式有

    var_dump($data) 会将变量的类型和值一起输出 echo 直接输出变量的值

    4、数据的发送与接收

    发送有两种方式:POST、GET 接收也有两种方式 $_POST、$GET POST发送时必须要利用form 标签,且form标签中还要包含,action=目标网址php,method=发送的方式 例如:

      

    接受方:02.php //echo json_encode($data) 表示以json的格式将数据发送给前端 <?php $aa = $POST[aa']; //表示接收前端post请求发送过来的数据包 $bb = $POST['bb']; echo($_POST); //echo表示返回给前端的数据 ?>

    注意: 1、get也可以有form形式,通过网址直接进行发送,如: http://www.sdsad.com/02.php/?aa=12&bb=123 2、还可以同时发送get和post数据的方法如:<form action='02.php/?aa=12&bb=123' method = 'post'></form>

    4、运算符和流程控制 .相当于将两个字符串相加起来 条件:if elseif/else if

    循环:for($data =0;$data<20){ echo 'hello world'; } foreach 是用来便利数组和对象的,且遍历数组时只能遍历一层 foreach($data as $key => $value){ //data是数组,放在最前面 echo $key; echo $value; } 注意不是关联数组时,用这个 foreach($data as $value){ //data是数组,放在最前面 echo $value; }

    还有continue和break这个用法和其他的语言一样

    5、die的用法

    die的用法是:die用于终止程序,且打印出括号后的内容如:die('hello world')

    6、函数与参数,作用域、匿名函数,系统自带函数

    函数与参数 fuction name($var){ $data = 25; 局部变量 echo 'hello world' } 匿名函数:$func = function(){}; func(); 系统自带函数--time() time();得到时间戳 微秒级:microtime() 作用域: global $data = 12; 全局变量

    7、类的学习,语法与c++的几乎一样

    class name{ public $data = 45; private $data1 = 45; protected $data2 = 45;

    public function fun(){ echo $this->data echo 'hello world'; }

    }

    $obj = new name(); echo obj->data;

    8、构造函数与析构函数

    构造函数: public function __construct(){

    } 析构函数: public function __destruct(){

    }

     

    9、#include与#include_once的解决重复包含

    #include('parse.php')

    #include_once('parse.php') #include_once('parse.php') #include_once('parse.php') 只包含一次

    10、连接数据库

    <?php $local = '127.0.0.1'; $user = 'spiderWriter'; $pass = 'zhang'; $dbname = 'student'; $db = new mysqli($local,$user,$pass,$dbname); if($db->connect_errno <> 0) { #<> 不等于 echo "连接失败!"; }else{ $sql = "INSERT INTO student values ('zhang',12)"; $is = $db->query($sql); var_dump($is); if($is == true){ echo '插入成功!'; }else{ echo '插入失败!'; } } ?>

    11、将用户的留言写入到数据库

    其中当你安装了phpstudy时,其中就会自带一个mysql服务器 如果你的电脑中原来就安装了一个mysql服务器的话,那么此时你的电脑上就有两个mysql服务器了 这两个mysql服务器在初始状态下都是通过3306端口提供服务,因此不可以同时打开 可在my.ini配置文件下去修改clinet下的port和mysqld下的port以便是的这两个服务器能同时提供服务 注意:这里有个坑,就是修改port并保存后那么文件的编码方式就从ascn变成utf-8了,一定要另存为改过来,否则mysql服务器打不开 在每个mysql服务器下都有一个根数据库,可以在这个跟数据库下创建其他的数据库 或者直接访问该根数据库下的数据库,但是不可以在该数据库下创建其他的数据库吗也就是说只有两层数据库 <?php $local = '127.0.0.1'; $user = 'spider'; $pass = 'zhang842563'; $dbname = 'student';

    $db = new mysqli($local,$user,$pass,$dbname); if($db->connect_errno <> 0){ echo '连接失败!'; }else{ $string = 'INSERT INTO data VALUES('zhang',17);'; $is = $db->query($string); echo $is->fetch_row(); } ?>

    12、发送ajax数据给后端服务器

    前端Get: var UserName = 123456; $btn.eq(0).click(function(){ $.ajax({ //ajax请求只有一个对象参数 type:'get', //说明请求的方式为get url:'01.php?username = '+UserName, //说明请求要发送到的php后台地址 dataType:'json', //说明与后台交互的数据格式为json success:function(res){ //当后台返回数据时本函数自动调用,这是一个闭包,异步函数 console.log(res); console.log(res.info) } }) }) 后端php: <php? $data = array('a'=>123,'b'=456,'c'=>789,'d'=>$_GET); echo json_encode($data); ?>

    前端Post: var UserName = 123456; $btn.eq(0).click(function(){ $.ajax({ //ajax请求只有一个对象参数 type:'get', //说明请求的方式为get url:'01.php', //说明请求要发送到的php后台地址 dataType:'json', //说明与后台交互的数据格式为json data:{ //data为post独有的 username:UserName; } success:function(res){ //当后台返回数据时本函数自动调用,这是一个闭包,异步函数 console.log(res); console.log(res.info) } }) })

    后端php: <php? $data = array('a'=>123,'b'=456,'c'=>789,'d'=>$_POST); echo json_encode($data); ?>

    13、AJAX与HTTP:AJAX:ASYNC JAVASCRIPT AND XML

    首先要说明的是AJAX是一套数据交流的规则(由JS向服务器发起http请求) AJAX是围绕这个功能而开发的一套完整的做法 AJAX模块在处理网络请求的时候的四个步骤: 1>、创建XHR对象 2>、发出HTTP请求 3>、接收服务器返回的数据 4>、更新网页

    14、发送AJAX请求给服务器

    //创建xhr对象 var xhr = new XMLHttpRequest(); xhr.open('get','index.php',true); //设置请求要发往何处,以什么方式、要发送到的地址、异步/同步 xhr.send(null); //发送请求 //监听整个请求事件:后台有没有接收到请求、前台有没有接收到请求 xhr.onreadystatechange = function(){ //此函数相当于$.ajax({}) if(xhr.readyState == 4){ //4表示(后台)服务端成功接受到了请求 if (xhr.status == 200) { //200表示(前台)客户端成功接受到了请求 alert(typeof JSON.parse(xhr.responseText)); //打印后台返回的数据 } } }

    15、文件的操作:

    $result = file_get_contents($MusicUrl);//把文件读入一个字符串 $result = file_put_contents("$ip.txt",$ip);//将$ip写入到$ip.txt中 header('Content-Type:application/json; charset=utf-8'); //输出被发送之前调用 header() 函数 $result = mb_convert_encoding($result, 'UTF-8', mb_detect_encoding($result, 'UTF-8, ISO-8859-1', true));

    16、php高级

    //命名空间:就相当于一个文件夹,在不同的文件夹下就可以有相同的类名了 namespace hello; //以下都被包含在hello的命名空间之下 class person{ function eat(){ echo '我在吃馒头'; } } namespace world;//以下都被包含在world的命名空间之下 class person{ function eat(){ echo '我在吃西瓜'; } } $obj4 = new person(); $obj4->eat(); echo " "; $obj5 = new helloperson(); $obj5->eat(); //第一个命名空间的前面不能有任何的代码 //根空间:(所有的空间都在根空间下) //子空间:如上面的空间可以写成 namespace world ext; //new的时候代码也要写成$obj = new world extperson();才行 //use:使用使用命名空间下的代码 //如:use worldperson as Person; 当有两个或多个重名的时候,用as取别名取解决

    final class student{ //final表示该类不能被继承

    } abstract class teacher{ //抽象类--不能时刻化一个对象 function ab(){ echo '这是接口l类'; } abstract public function cd(); //抽象方法不能被实现 //abstract private function ef(); //abstract不能修饰private、protected } interface openDoor{ function USB(); } interface windows extends openDoor { //接口--抽象的抽象类,里面的方法都是抽象方法,接口可以继承方法但是方法都要实现 function eat(); //里面的方法不需要去实现,由他的继承者去实现,只有函数的声明 } interface Door{ function durink(); } class person implements windows,Door { //可以继承多个接口 public function USB(){ echo '实现上一个接口'; } public function eat(){ //对继承过来的方法去实现 echo '你吃饭了吗?'; } public function durink(){ echo '一起去喝酒'; } }

    class father{ static public $Length = 10; public $name = 'wu'; public $age = 18; public function construct(){ //魔术方法--在实例化对象的时候自动调用 $name = 'zhang'; $age = 50; } final public function GetName(){ //final表示该方法不能被重写 return $this->name; } public function GetAge(){ return $this->age; } public function get($name) //魔术方法--对象在外部访问私有成员或是受保护的成员的时候调用 { // TODO: Implement get() method. echo $name; } public function set($name, $value) //魔术方法--对象在外部设置私有成员或是受保护的成员的时候调用 { // TODO: Implement set() method. } public function destruct() //魔术方法--在对象被销毁的时候自动调用 { // TODO: Implement __destruct() method. }

    public function unset($name) //魔术方法--对象在外部销毁私有成员或是受保护的成员的时候调用 { if($name == 'age'){ unset($this->age); //自设置销毁 } // TODO: Implement unset() method. } public function isset($name) //魔术方法--对象在外部判断私有成员或是受保护的成员的时候调用 { if($name == 'age'){ isset($this->age); //自设置,否则都在false } // TODO: Implement isset() method. } public function sleep() //魔术方法--在序列化一个对象的时候调用 { // TODO: Implement sleep() method. return ['name']; //只序列化name属性 } public function wakeup() //魔术方法--在反序列化的时候调用 { // TODO: Implement wakeup() method. }

    public function __clone() //魔术方法--在克隆一个对象的时候调用
    {
      // TODO: Implement __sleep() method.
    }

    }

    class son extends father { public function GetAge() { return parent::GetAge() + 25; //不完全重写,在父类的基础上去增加 } } //echo father::$Length." "; //静态的调用 $obj2 = new father(); echo "长度是:".$obj2->Length." "; $obj2 = serialize($obj2); //序列化--将对象信息编程课保存在磁盘中的文件 file_put_contents('main.txt',$obj2); //保存在磁盘中的文件 echo $obj2." "; $str = file_get_contents('main.txt'); //拿出在磁盘中的文件 $obj2 = unserialize($str); //并且反序列化为一个对象 echo var_dump($obj2)." "; $obj = new son(); echo $obj->GetAge()." "; echo $obj->GetName(); //trait就是用来模拟实现多继承的,与class写法一模一样,trait不能实例化 //instance:实例 //trait中的方法要想让子类来使用就需要用public,trait可以嵌套trait如: trait Dun{ function fangyu(){ echo '我可以抵抗100点伤害'; } } trait Sword{ use Dun; //嵌套使用 function attack(){ echo "我会增加50点伤害"." "; } } trait Sword1{ function attack(){ echo '我会增加100点伤害'." "; } } //当两个trait中都出现attack方法的时候会报错,那么如何解决呢? //只有一个trait时:use Sword;有多个trait并且使用大括号时{}不用; class zhanshi{ use Sword,Sword1{ Sword::attack insteadof Sword1; //在两者中选择一个默认的,以避免冲突 Sword1::attack as Sattack; //取别名,以便调用另外一个attack } } $obj3 = new zhanshi(); $obj3->attack();

    17、php高级2:web播放器 前台: <!--var reg = /http://m10.music.126.net/[0-9a-zA-Z]+/[0-9a-zA-Z]+/[0-9a-zA-Z]+/[0-9a-zA-Z]+/[0-9a-zA-Z]+/[0-9a-zA-Z]+/[0-9a-zA-Z]+.mp3/--> <!--music_url = xhr.responseText--> <!--if(reg.test(music_url)){ //126接口--> <!-- music_url = reg.exec(music_url)--> <!-- $('.MusicPlayer').attr('src',music_url)--> <!-- }else{ //163接口--> <!-- $('.MusicPlayer').attr('src',music_url) --> <!--}--> 后台: function getMusic($MusicUrl) { $temp = explode('=',$MusicUrl); //以'='作为分割符,将$MusicUrl分成数组 $id = $temp[1]; $MusicUrl = "https://music.163.com/song/media/outer/url?id=".$id; return $MusicUrl; }

  • 相关阅读:
    input中只能填数字的限制
    免登陆:保存登录页面的用户名密码,用md5对密码加密保存
    SQL 插入日期时间 变量值
    Debugger Exception Notification
    CoHTMLDocument
    json数组,随便测试
    显示时间的毫秒
    赋值后再调整动态数组的元素个数
    数据集和非数据感知控件使用
    FR报表 自动缩小的代码
  • 原文地址:https://www.cnblogs.com/z2529827226/p/13197746.html
Copyright © 2020-2023  润新知