php_07_类/对象相关操作

1.php正则

<?php
    //判断字符串的格式
    //匹配字符串的一种语法
    //PHP正则方法
    //参数1:正则表达式
    //参数2:要检查的字符串
    //参数3:接收结果的数组(可以省略)
    //如果参数3省略,最后方法的返回值为true/false
    //如果匹配成功,则返回true
    header("content-type:text/html;charset=utf-8");
    $str = "1779697236@qq.com";
    //^开头
    //[]里面任意字符
    //+ 匹配前面表达式一次或多次
    //$ 结尾
    // /i不区分大小写

    $pattern ="/^([0-9A-Za-z-_.]+)@([0-9a-z]+.[a-z]{2,3})$/";
    $result =  preg_match($pattern, $str);
    //http://www.cnblogs.com/kevin-yuan/archive/2012/09/25/2702167.html
    if($result){
        echo "验证成功";
    }else{
        echo "验证失败";
    }
    //黑客找到你的接口地址,可以跳过你的JS验证,直接向你的PHP文件发送数据,
    //如果php不验证,直接存入数据库,是非常危险的,所以在php这边还需要验证一次

    //JS获取你的电脑上的时间进行判断,你可以修改电脑的时间,影响JS的判断(比如挂:永远不过期)

    //记住:前端的时间,必须是从服务器上获取的
?>

2.类

<?php
    header("content-type:text/html;charset=utf-8");
    class Person{
        public $name; //成员属性
        function eat(){//成员方法
            return "正在吃饭";
        }
    }
    //用类创建对象
    $lisi = new Person();
    $lisi -> name = "李四";//访问成员属性或者方法
    echo $lisi->name.$lisi->eat();
?>

3.类中的$this

<?php
    header("content-type:text/html;charset=utf-8");
    // 类中的$this关键字:用来访问当前类中的对象属性/方法。
    // $this 一般用于类中
    class Person{
        public $name; 
        public $sex;
        function eat(){
            return $this->name."正在吃饭。性别".$this->sex;
        }
    }

    $lisi = new Person();
    $lisi -> name = "李四";
    $lisi -> sex = "boy";
    echo $lisi->eat();
?>

4.类的初始化

<?php
    header("content-type:text/html;charset=utf-8");
    class Person{
        public $name; 
        public $age;
        public $color;
        //系统函数
        //在新建对象的时候,初始化对象的属性
        function __construct($n, $a, $c){
            $this->name = $n;
            $this->age = $a;
            $this->color = $c;
        }

        function info(){
            return $this->color."颜色的人,今年".$this->age."岁,他的名字是:".$this->name;
        }
    }
    $lisi = new Person("李四",18,"黄皮肤");
    echo  $lisi->info();
?>

4.举例

<?php
    // 面向对象
    header("content-type:text/html;charset=utf-8");
    class Person{
        public $name;
        public $clo;
        public $shoe;
        public $target; // 目的地
        // 可以给参数默认的值
        function __construct($n, $c, $s, $m="杭州")
        {
            $this->name = $n;
            $this->clo = $c;
            $this->shoe = $s;
            $this->target = $m;
        }

        function goOut () { // 出门
            return $this->name . "穿着" . $this->clo . "踏着" . $this->shoe . "出门了";
        }
        function setM () { // 决定目的地
            return "到达" . $this->target . "可以开心的玩耍了";
        }
        function buyT () { // 买票
            return $this->name . "买了一张单程票, 而且是站票";
        }
        function play () { // 出去玩
            return $this->goOut() . $this->buyT() . $this->setM();
        }
    }

    $a = new Person("李明", "女装", "高跟鞋", "非洲");
    echo $a->play();

    echo '<br>';

    $b = new Person("ZZZ", "裙子", "趿拉板", "南极");
    echo $b->play();

?>

5.析构函数

<?php
    header("content-type:text/html;charset=utf-8");
    class Person{
        //在这个类创建的对象被释放时自动调用的方法,称为析构函数
        //垃圾回收机制,后进先出
        //后进先出:后创建的先被释放
        public $name;
        public $age;
        function __destruct(){
            echo $this->name;
            $this->name = null;
            $this->age = null;
            //在释放的最后一刻,把指向的那块内存空间数据置为null
        }
    }

    //如果让先创建的对象先释放,需要把对象置空
    $a = new Person();
    $a->name = "李四";
    $a = null;
    $b= new Person();
    $b->name = "李四1";
    $b = null;
    $c = new Person();
    $c->name = "李四2";
?>
<!--
    释放:
    PHP里有个 垃圾回收机制
    当系统判断你这个对象,已经不适用的时候,
    会把这个对象所占的内存空间,进行回收。
    这个回收的动作称为释放
-->

6.封装

<?php
    //封装:
    //把一些相关的属性和方法的代码隐藏在方法中,
    //可以让代码重复使用

    //public  表示全局,类内部,子类可以访问被这个修饰的变量
    //protected 表示受保护的属性,外部无法访问
    //表示私有的属性/方法,只有本类内部可以使用,子类或者外部无法访问
    class Person{
        public $name;
        protected $age;
        private function say(){
            return $this->age;         
        }
    }

    $a = new Person();
    $a->name = "lisi";
?>

7.get_set

<?php
    header("content-type:text/html;charset=utf-8");
    class Person{
        public $na;
        private $weight;
        private $age;
        protected $d = 50;
        function __construct($n, $w = 100,$age =18){
            $this->na = $n;
            $this->weight =$w;
            $this->age = $age;
        }       

        function __get($name){
            return $this->$name;
        }

        //访问类的成员属性,并且赋予值
        function __set($name, $value){
            //如果成员属性,设置成受保护的或者私有的,可以在set方法,进行判断阻拦,
            //如果你不想让值被更改,可以在这里进行if判断
            if($name == "d"){
                return;
            }else{
                $this->$name = $value;
            }
        }
    }

    $n = new Person("李四");
    //直接访问属性,会自动调用get方法
    //如果访问的是私有属性,类里没有自己实现get方法,则会报错
    //echo $n->age;
    //echo $n->weight;

    //echo $n->age = 20; //访问类的私有属性并赋值
    $n->d = 100;
    echo  $n->d;
?>

8.继承

<?php
    //父类:被继承  子类:继承
    class Person{
        public $name;
        protected $age;
        private $sex;
        function sayHello(){
            echo "123";
        }
    }

    class Man extends  Person{
        public $hou;
        function ex(){
            echo $this->name.$this->age;
        }   
    }
    //php的继承:共享被继承类里的内容;且只能单一继承
    $fuPer = new Person();
    $fuPer->name = "李";

    $cPer = new Man();
    echo $cPer->sayHello();
    //子类继承父类里属性和方法
    //父类里的私有东西无法被继承过来

?>

9.重载

<?php
    class Person{
        public $name;
        function sayHello(){
            echo "001";
        }

        function c($a){
            echo "father";
        }
    }

    class Girl extends Person{
        //重写:实现父类相同的属性或者方法,就是重载
        function sayHello(){
            //手动调用父类的方法属性
            Person::sayHello();
            echo "002";
        }

        function c(){
            $arg = func_get_arg($arg_num);
            var_dump($arg);

            echo "child";
        }
    }

    $a = new Girl();
    //echo $a->sayHello();
    echo $a->c();

    //重写:2个方法名完全一样,参数个数相同
    //重载:2个方法名一样,但是采纳数个数不同
    //(注意PHP没有直接实现重载的方式,只能通过判断参数的个数,
    //然后利用类::方法(传参)调用父类方法)

?>

sql

<?php

   SQL语句:就是对数据库进行操作的一种语言。
         我们可以使用后台编程语言 执行SQL语句, 对数据库进行操作.

         查询:
         SELECT * FROM student
         * 你要查询的字段, *代表所有
         意思: 查询student表里的所有字段以及值

         SELECT gradeclass, age, name FROM student
         可以指定你要查询的字段

         条件查询:

         1.单个字段条件:
         SELECT * FROM student WHERE sex = "女"
         条件在表名后面, 使用WHERE
         WHERE后面设置条件

         2.AND查询条件
         SELECT * FROM student WHERE sex = "女" AND name = "小花"
         必须同时满足我们WHERE后面的条件
         AND 就是并且的意思, 可以写多个

         3.OR查询条件
         SELECT * FROM student WHERE name = "李明" OR age = 21
         只要满足OR任意一边的条件, 都可以

         4.模糊查询条件
         SELECT * FROM student WHERE name LIKE "李%"

         % 代表0个或多个字符
         _ 代表一个字符

         %计%  这种查询条件, 只要带计就可以.

         5.排序
         SELECT * FROM student ORDER BY age DESC
         ASC: 递增 (默认)
         DESC: 递减
         ORDER BY 字段(根据某个字段进行排序)

        6.count() 统计函数, 统计一共有多少条数据

        分组查询每个年龄段各有多少人
        SELECT count(*),age FROM studentgroup by age  

        统计姓李的一共有多少人
        SELECT count(*),name FROM student WHERE name like '李%'

        左链接 以左边的表为参照,以on后面的为条件,去右面的表里一一查询数据并显示出来
        select * from student left join sc on student.sno = sc.sno
           右链接
        select * from student right join sc on student.sno = sc.sno
           全链接  必须左右两面的sno 都存在的情况下,才取出数据
        select * from student inner join sc on student.sno = sc.sno   

        查询每个学科有多少人选修
        select count(*),study.cno from study left join sc on study.cno = sc.cno group by study.cno
        查询每个学科的平均成绩
        select study.cname,max(grade) as "最大值",min(grade),sum(grade),avg(sc.grade) from study left join sc on study.cno = sc.cno group by study.cname

        limit
        分页公式
        SELECT * FROM student   limit 0,2
        0: 从那个位置开始,查询出来的数据从0开始索引
        2: 个数
        05
        55
        105
        155

        pageCount 表示当前是第几页
        pageNum 表示每页几条数据
        SELECT * FROM student limit (pageCount - 1) * pageNum ,pageNum

        主键:不允许为空,值唯一,一般用于表示一条数据的独特性(身份证号)
        ----------------------华丽分割线---------------------------------
        1.增加数据的sql
        INSERT INTO student(sno, name, sex, age, gradeclass) VALUES ('','王明','男',18,'计算机')
        注意:字段的顺序和值的顺序一样要一一对应的关系,
        字段可以不写全,比如我不想给年龄,就不需要些age
        2.修改的sql
        更新表
        注意:如果没有条件,则更新的是所有的这个字段的值
        update student set name = '李四' where student.sno = 1
        update student set age = age + 1
        3.删除sql
        deldete from student where name = '张三'
        注意 如果不给条件,则删除这个表里的所有数据
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值