//定義數組
$arrayName = array('0' => '🍎','1' => '🍌');
//打印數組
echo $arrayName[0];
複製代碼
// 設置utf8的報頭
header( 'Content-Type:text/html;charset=utf-8 ');
// 接受get請求
$username = $_GET['username'];
//post請求
$username = $_POST['username'];
//什麼請求均可以檢測到
$username = $_REQUEST['username'];
複製代碼
//設置報頭
header("Content-type:text/html;charset=utf-8");
//定義連接的一些參數
$servername = "localhost";
//username默認是root
$username = "root";
$password = "";
//庫名
$dbname = "PHPlesson";
// 建立鏈接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 檢測鏈接,若是連接失敗,就拋出錯誤
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//定義sql語句,添加信息
$sql = "INSERT INTO `news`(`news`, `newsimg`, `addtime`) VALUES ('news11','哈哈','2019-10-11')";
if (mysqli_query($conn, $sql)) {
echo "新記錄插入成功";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
//關閉連接
mysqli_close($conn);
複製代碼
class Person{
//公共屬性
public $age;
//公共方法
public function say($word){
echo 'she say {$word}';
}
public function info(){
//調用方法,這裏能夠把 ->理解爲js裏面的點
$this -> say('hi');
return $this -> age;
}
}
$xiaohong = new Person();
$xiaohong -> age = 22;
$age = $xiaohong -> info();
echo "123";
echo $age;//22
複製代碼
<?php
class person{
//固定寫法,相似於js裏面的constructor
public function __construct($name,$age){
//new 的時候自動執行的
$this -> name = $name;
$this -> age = $age;
}
public function data(){
return $this -> age;
}
//析構--->代碼執行完畢後指執行的函數
public function __destruct(){
echo $this -> data();
//用途:進行資源的釋放,數據庫的關閉,代碼執行完畢,
echo "bye bye {$this -> name}";
echo "<hr/>";
//bye bye tory
}
}
new person('tory',30);
new person('red',320);
?>
複製代碼
<?php
/* 當試圖獲取一個私有變量時,類會自動調用__get。 一樣的,當試圖設置一個私有變量時,類會自動調用__set。 */
class person{
//共有的
public $name = "zjx";
// 私有的
private $age = '21';
//受保護的
protected $money = '30';
//私有成員方法不能在類的外部訪問
private function getName(){
return $this -> name;
}
protected function getMoney(){
return $this -> money;
}
public function userCard(){
echo $this -> name.$this -> getName().'存款'.$this -> getMoney();
}
public function __set($name,$value){
//$name:變量名,$value:變量值
//魔術方法的set只針對保護,私有變量
echo $name.$value.'</br>';
if ($name == 'age' && $value == '100') {
echo 'zjx 100';
}
}
public function __get($key){
//$key:變量名
echo 'ok'.$key.'ok';
}
}
$xw = new person();
//沒有set的時候是不能在外邊操做私有變量的
$xw -> age = "100";
echo $xw -> userCard();
echo $xw -> age;
//isset() — 檢測變量是否設置。
unset($name);//幹掉某個變量
?>
複製代碼
/*PHP只支持單繼承,不容許多重繼承。一個子類只能有一個父類,不容許一個類直接繼承多個類,但一個類能夠被多個類繼承。 能夠有多層繼承,即一個類能夠繼承某一個類的子類,如類B 繼承了類A,類C又繼承了類B,那麼類C也間接繼承了類A,*/
class A{
....
}
class B extends A{
....
}
class C extends B{
....
}
複製代碼
<?php
/** * 父類 */
class person {
public $name = 'zjx';
private $age = '10';//私有的屬性沒法繼承
protected $money = '100';//受保護的外部沒法訪問,可是能夠繼承過去
function __construct($name,$age,$money){
$this -> name = $name;
$this -> age = $age;
$this -> money = $money;
}
public function cardinfo(){
echo $this -> name.'->'.$this -> age.'->'.$this -> money;
}
}
/** * yellow繼承person */
class yellow extends person {
function __construct($name,$age,$money) {
//使用父類的構造函數,若是不寫這個的話就會覆蓋父類的構造函數
parent::__construct($name,$age,$money);
}
public function cardinfo($pp){
//借用父類的cardinfo方法
parent::cardinfo();
echo $pp;
}
}
$s = new yellow('xiaom','1','20');
$s -> cardinfo(11);
?>
複製代碼
使用接口(interface),能夠指定某個類必須實現哪些方法,但不須要定義這些方法的具體內容。php
接口是經過 interface 關鍵字來定義的,就像定義一個標準的類同樣,但其中定義全部的方法都是空的。html
接口中定義的全部方法都必須是公有,這是接口的特性。mysql
何時用接口?sql
一、定規範,保持統一性;數據庫
二、多個平級的類須要去實現一樣的方法,只是實現方式不同數組
接口使用規範bash
實例:less
<?php
//接口聲明的關鍵字是interface
//接口中的方法都是抽象方法,不也使用abstract去手動的定義
interface usb{
const brand = 'siemens'; // 接口的屬性必須是常量
public function connect(); // 接口的方法必須是public【默認public】,且不能有函數體
}
// new usb(); // 接口不能實例化
// 類實現接口
class Android implements usb{
public function connect(){ // 類必須實現接口的全部方法
echo '實現接口的connect方法';
}
}
interface usbA{
public function connect();
}
interface usbB{
public function contact();
}
// 類能夠同時實現多個接口
class mi implements usbA,usbB{
public function connect(){
}
public function contact(){
}
}
?>
複製代碼
程序中,有些類的做用只是用來繼承,無須實例化;ide
爲了知足類的這種需求,php提供了抽象類的概念 ,關鍵詞abstract;函數
抽象類原則:
<?php
abstract class Animal{
public $name = 'animal';
// 有抽象方法的類必定是抽象類;類必需要abstract修飾
// 抽象方法不能有函數體
abstract function cry();
public function getName(){
echo '個人名字';
}
}
// new Animal(); // 報錯,抽象類不能被實例化
class Dog extends Animal {
// 非抽象子類繼承抽象類,子類必須實現父類的全部抽象方法
public function cry(){
}
}
$dog = new Dog();
$dog->getName(); //抽象類中的非抽象方法能夠調用
abstract class Cat extends Animal{
// 抽象子類繼承抽象類,無需繼承父類的抽象方法
}
?>
複製代碼
1、引入php文件路徑的方法
require '文件路徑'; require ('文件路徑');
require_once '文件路徑'; require_once ('文件路徑');
include 同 require
include_once 同 require_once
2、include和require的區別
複製代碼
推薦使用require_once方法引入文件
在講解這三大特性前,咱們先講訪問修飾符。
php中有3中訪問修飾符:public protected private;
public:表示公有的;可在本類、子類、對象實例中訪問。
protected:表示受保護的;可在本類、子類中訪問;不能在對象實例中訪問。
private:表示私有的;可在本類中訪問;不能在子類、對象實例中訪問。
1、封裝性
封裝就是把抽取出來的數據和對數據的操做封裝在一塊兒,數據被保護在內部,程序的其餘部分只有被受權的操做(方法)才能對數據進行操做。
class Student{
public $name;
protected $age;
private $play;
public function __construct($name, $age){
echo '我是Student類';
$this->name = $name;
$this->age = $age;
}
}
$student = new Student('moon', 18);
複製代碼
2、繼承性
當多個類有不少共同屬性和方法時,代碼冗餘;這時,咱們能夠將共有部分提取出來,封裝成一個類;子類通過一些操做可使用這個共有的父類,這個就叫繼承。
語法結構:
class 父類名{}
class 子類名 extends 父類名{}
繼承要素:
class Student{
public $name;
protected $age;
private $play;
public function __construct($name, $age){
echo '我是Student類';
$this->name = $name;
$this->age = $age;
}
}
// Pupil類繼承Student類
class Pupil extends Student {
public function testing(){
echo '我是Pupil';
}
public function __construct($name, $age){
parent::__construct($name, $age); // 調用父類的構造方法1
// Student::__construct($name, $age); // 調用父類的構造方法2
echo $this->name;
echo $this->age;
// echo $this->play; // 報錯,父類private定義的屬性不能被子類繼承
}
}
new Pupil('sky', 18);
// 實現類的多層繼承
class A{
public $name='AAA';
}
class B extends A{
public $age=30;
}
class C extends B{}
$p = new C();
echo $p->name; // 這裏會輸出AAA
複製代碼
3、多態性
class Student{
public $name;
protected $age;
private $play;
public function getPlay(){
echo '我是Student';
}
}
// Pupil類繼承Student類
class Pupil extends Student {
public function __construct(){
parent::getPlay(); // 能夠這樣調用父類的方法
}
public function getPlay(){
echo '我是Pupil';
}
}
$p1 = new Pupil(); // 我是Student
$p1->getPlay(); // 我是Pupil
複製代碼
擴展:
方法重載(overload)
基本概念:函數名相同,但參數的個數或參數的類型不一樣,達到調用同一個函數,能夠區分不一樣的函數
在PHP5中雖然也支持重載,可是和其它語言仍是有很大區別的,php中不能定義多個同名函數
PHP5中提供了強大的「魔術」函數,使用這些魔術函數,咱們能夠作到函數重載
這裏咱們要到到 __call,當一個對象調一個方法時,而該方法不存在,則程序會自動調用__call