11.6學習筆記
複習一下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();
?>