复习一下mysql语句:
查询单行?
select * from '表名' where id="值";
查询0,5?
select * from '表名' limit 0,5
查询满足用户名和密码匹配?
select * from admin where `username`='值' and `password`="值";
添加用户?
insert into `表名` values('值1','值2','值3'。。。)
删除用户?
delete from `表名` where id="值";
既要排序(降序)做前5条数据的查询?
select * from `表名` order by id desc limit 0,5;
oop思想 面向对象
面向对象 (Object)
(1)重用性、灵活性和扩展性
(2)万事万物皆对象
对象:人类
属性:姓名 年龄
方法:吃 喝 玩
(3) 声明一个类(对象)
class 类名{
}
$m = new 类名;//new :实例 实例化得到一个对象,后面的()是在没有参数的情况下是可要可不要。
var_dump($m);//返回的数据类型是object
对象返回的数据类型是object类型
类名:命名规则 (不能以数字开头,不要使用关键字,不要用中文命名,类名字首字母最好大写)
类名:不区分大小写,但是建议实例时跟你的类名一致
(4) 属性:类的静态描述,相当于一个变量
方法:类的动态描述,相当于一个函数
例子:
<?php
class Man{
//定义2个属性
public $name;//public公共的 访问修饰符
public $sex;
//定义方法
public function piao() //加上修饰符 没有加修饰符,默认也是public修饰符
{
echo ("在吃");
}
}
$m = new Man(); //实例化得到一个对象
$m->name="可爱"; //调用属性不加$符号
echo ($m->name); //输出属性的值
$m->sex ="男";
echo ($m->sex);
$m->piao(); //调用方法
?>
例子2:
class Man{
//定义属性
var $name; //定义属性 一定要有修饰符 (一般不建议用var这种方式定义)
var $sex;
//定义方法
public function show()
{
echo ("我在喝");
}
}
$m = new Man();
//var_dump($m);
$m->name="可爱";
echo ($m->name);
$m->show();
例子3:
$this :代表当前所操作的对象 $this->name:调用属性 不需要加$符号
<?php
class Man{
public $name;
public $sex;
public function show()
{
echo ($this->name."在玩");
}
public function display()
{
echo ($this->name."在玩");
}
}
$m= new Man();
$m->name = "可爱";
//echo ($m->name);
//$m->sex="女";
//echo ($m->sex);
$m->display();
?>
构造方法
第一种构造方法 初始化调用构造方法 __construct()
<?php
class Stus{
public $id;
public $name;
public function __construct($id,$name) //当实例化对象时就会初始化这个构造方法 (构造方法里面可以定义多个参数,参数与参数之间用,隔开,但是定义构造方法只能定义一次,构造方法里面参数没有默认值,当你实例化时你必须给没有默认值的参数传值过去,有默认值的参数就不需要传入值过去)
{
$this->id = $id;
$this->name = $name;
}
第二种构造方法写法 构造方法名跟类名一致
析构函数定义:__destruct() 一般不使用 public function __destruct() //析构函数定义 谁先调用谁就先被销毁 析构函数(无参数,无返回值,自动代用)
public function Stus($id,$name="可爱") //构造方法名跟类名一致,(且构造方法名不区分大小写,但是建议与类名相同一致)
{
$this->id = $id;
$this->name = $name;
}
public function __destruct() //析构函数定义 谁先调用谁就先被销毁 析构函数(无参数,无返回值,自动代用)
{
echo ($this->name."谁被先销毁");
}
public function sleep()
{
echo($this->name."在睡觉");
}
}
$m = new Stus(1,"王旭");
//$m->id=1;
//$m->name="王三";
$m->sleep();
?>
属性值可以定义哪些值?
(1):字符串的值 不行: (1):算法不行
(2):整形的值 (2):不能做字符串拼接
(3):可以定义数组 (3):逻辑运算不能定义
(4): 可以定义常量(define() 和 const)
<?php
class Man{
public $name="可爱"; //属性可以赋默认值
public $id;
public function display()
{
echo ("学号为".$this->id.$this->name."在学习");
}
}
$m = new Man();
$m->display();
?>
属性值权限:
外部属性值 > 内部属性值 > 属性默认值
<?php
class Man{
public $name="王三";
public function Man($name="蔡妍")
{
$this->name = $name;
}
public function show()
{
echo ($this->name."在玩");
}
}
$m = new Man("可爱");
$m->show();
?>
php面向对象 三大特性(封装 继承 多态)
单继承与多继承:php只支持单继承
继承关键字:extends
继承定义:继承是子类自动共享父类的数据结构和方法的机制,这是类之间的一种关系。子类可以在父类的基础上定义自己的属性与方法。
(1):子类继承了父类,拥有父类的所有属性和方法
(2) : php只支持单继承(只能有一个父类 )
(3):在子类中定义跟父类相同的函数,那这个方法叫重写(或者叫覆盖)
(4): 子类中定义的方法是自己拥有的
父类:
<?php
class F{
//定义一个父类
public $m = 1000;
public function show()
{
echo ("我有1000万");
}
}
//子类
class son extends F
{
public function show()
{
echo ("败家");
}
}
class sun extends son
{
}
$s = new son();
$s->show();
?>
final :最终
(1):final只能用来定义类或方法,不能用来定义属性。
(2):使用final关键字的类不能被继承。使用final关键字的方法不能被子类覆盖,是最终版本。
(3):定义:final 类名 / final 方法名()
例子:
<?php
class F{
final public function show()
{
echo ("有200万");
}
}
class Son extends F
{
public function show()
{
echo ("有300万了");
}
}
$s = new Son();
$s->show();
?>
修饰符访问权限 (访问修饰符可以定义在属性,也可以定义在方法)
public : 公共的 任何一个地方都可以访问 (默认属性和方法都是public公共的)
例子:
<?php
class Stus{
public $name;
public function show()
{
echo ($this->name."在学习");
}
}
$s = new Stus();
$s->name="张三";
echo $s->name;
$s->show();
?>
private :私有的 在类的本类中可以访问(类的类部访问)
例子:
<?php
class Stus{
public $name;
//私有的方法
private function show()
{
echo ($this->name."在睡觉");
}
public function display()
{
echo ("可爱去叫醒");
echo ($this->show());
}
}
$s = new Stus();
$s->name="王旭";
//$s->show();
$s->display();
?>
protected :受保护的 (在类的本类中可以调用,也可以在类的子类中调用)
例子:
<?php
class F{
protected function show()
{
echo ("拥有400万");
}
}
class Son extends F{
public function display()
{
echo ($this->show());
echo ("我自己也有200万");
}
}
$S = new Son();
$S->display();
?>
访问权限的:public > protected > private
魔术方法:
__get() //可通过判断权限让外部直接调用私有属性
__set() //可通过判断权限让外部给私有属性赋值
推荐使用 get() set()
例子:
<?php
class Stus
{
private $id;
public function Stus($id)
{
$this->id = $id;
}
/*public function __get($id) //get获取
{
return $this->id;
}
public function __set($id,$value)
{
$this->id = $value;
}*/
public function get()
{
return $this->id;
}
public function set($value)
{
$this->id = $value;
}
public function show()
{
//echo ($this->id);
echo("id的值");
}
}
$s = new Stus(1);
/*$s->id = 2;
echo ($s->id);
$s->show();*/
$s->set(2);
echo($s->get());
?>
static: 静态的
(1):类的静态变量,非常类似全局变量
static public $name; //定义静态属性 (static可以写在修饰符的前面也可以写在修饰符后面)
(2):属性设置了静态属性,那么代用的方法也要设置为静态方法
(3): $this->name : 非静态调用方式 (调用属性时不加$符号)
self::$name : 静态成员属性调用方式 (调用静态属性时要加$符号)
(4):调用静态方法:类名::方法名();
(5):声明一个常量
const BASE_URL = "127.0.0.1"; const 取名字="值"
在方法里面调用常量 self::常量名
例子:
<?php
class Stus{
static public $name="张三"; //静态属性
static public function show()
{
//echo $this->name;
echo self::$name;
}
//声明一个常量
const BASE_URL = "127.0.0.1";
static public function display()
{
echo (self::BASE_URL);
}
}
/*$s = new Stus();
//$s->name="张三";
//echo ($s->name);
$s->show();*/
Stus::display();
?>
克隆 __clone() :克隆方法
例子:
<?php
class Stu{
public $name="可爱";
//克隆
public function show()
{
echo($this->name);
}
public function __clone()
{
}
}
$S = new Stu();
$S->show();
$s2 = clone($S);
$s2->show();
?>