1. 程式人生 > >11.6學習筆記

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();
?>