前端小白之每天學習記錄----php(6)物件導向

來源:互聯網
上載者:User

標籤:sage   student   編程   sgd   說話   重寫   學習   fetch   info   

php物件導向
類:
一類共性事物的抽象
比如:

       eg:車子

共性:類的共性

       eg:輪子、能動

對象:
        類造出來的

        eg:單車, 滑板車, 小汽車, 卡車, 

對象才是具體的產品,才能使用功能

1.php建立一個類,並執行個體化(執行個體化指的是用類新造一個對象):

定義方法:class 類名稱 {} 

public: 屬性修飾符: 用來控制 屬性/方法 的存取權限

執行個體化對象:對象名 = new 類名();

 

<?php    /*        定義一個類        class 類名稱 {        }        類是由n個屬性和方法組成的
     eg:定義一個類:電腦 */
class Computer { //public: 屬性修飾符: 用來控制 屬性/方法 的存取權限 public $cpu = ‘i5四核‘; public $memory = ‘88G‘; public function surf(){ echo ‘上網‘; } public function play(){ echo ‘播放電影‘; } public function program(){ echo ‘編程‘; } } //執行個體化對象:對象名 = new 類名(); $c = new Computer(); //調用類的方法: 對象->方法名 $c->play(); //播放影片 echo ‘<br/>‘; //讀取對象的屬性 對象->屬性名稱[注意, 屬性前面不需要貨幣符號] echo $c->cpu; //i5四核?>

2.屬性修飾符與this

常見的屬性修飾符用3個:
public( 公用的 )
protected: 受保護的
private: 私人的( 繼承裡面講 )

this:

 哪個對象調用我,我就指向誰

    //Object.defineProperty    class Computer {        //public: 屬性修飾符: 用來控制 屬性/方法 的存取權限        /*            常見的屬性修飾符用3個:                public( 公用的 )                protected: 受保護的( 繼承裡面講 )                private: 私人的        */        //類的外面: 類的定義中 {} 的外面        //類的裡面:   類的定義中 {} 的裡面        public $keyboard = ‘鍵盤‘; //public: 在類的外面 和 類的裡面 都能夠訪問        public $mouse = ‘滑鼠‘;        private $cpu = ‘4核i5‘; //private: 只能在類的內部才能訪問        public function showInfo(){            //this: 哪個對象調用我,我就指向誰            echo $this->cpu . ‘--‘ . $this->mouse . ‘---‘ . $this->keyboard;        }    }    $c = new Computer();    $c->showInfo();//     // echo $c->cpu; //報錯, 在類的外面 不能訪問私人的屬性    // echo $c->keyboard;    // echo $c->mouse;

3.建構函式

 

<?php   /*        建構函式:            1, 定義的時候, 他的函數名: __construct            2,php4 建構函式名是跟類同名            3, 建構函式 不需要手動去調用, 自動被調用              當對象執行個體化的時候, 建構函式會被自動調用   */     class Person{        public $name;        public $sex;        public function __construct( $n, $s ){            echo ‘我會自動調用‘;            $this->name = $n;            $this->sex = $s;        }    }    $p = new Person( ‘zhangsan‘, ‘man‘ );//自動調用    $p2 = new Person( ‘lisi‘, ‘man‘ );?>

 

4.繼承

 

定義子類的方法:class 子類名 extends 父類名{} 繼承 到底 繼承了什嗎?1, 父類所有的public的屬性和方法2, 父類所有的protected的屬性和方法3, private的屬性和方法 不會繼承過來
public: 類內,類外,子類 可以訪問 protected: 類內,子類的類內 可以訪問 private: 類內 可以訪問

 

<meta charset="UTF-8"><?php    class Person {        public $name;        public $age;        public function __construct( $n, $a ){            $this->name = $n;            $this->age = $a;        }         public function speak(){            echo ‘說話<br/>‘;        }        protected function eat(){            echo ‘吃飯<br/>‘;        }        private function waimao (){            echo ‘長相<br/>‘;        }    }    //class 類名 extends 父類名    /*        繼承 到底 繼承了什嗎?            1,父類所有的public的屬性和方法            2, 父類所有的protected的屬性和方法            3, private的屬性和方法 不會繼承過來        public: 類內,類外,子類 可以訪問        protected: 類內,子類 可以訪問        private: 類內 可以訪問    */    class Student extends Person{
     //增加內容 public $No;
//擴充建構函式 public function __construct( $n, $a, $no ){ //parent:父類 parent::__construct( $n, $a ); //調用父類的建構函式 $this->No = $no;//建構函式新擴充的內容 } //重寫建構函式 // public function __construct( $n, $a, $no ){ // $this->name = $n; // $this->age = $a; // $this->No = $no; // } //如果 不滿意父類的方法,可以重寫(覆蓋繼承過來的方法) public function speak(){ echo ‘我說的是 學生話<br/>‘; } //父類沒有的方法, 可以增加 public function test(){ echo ‘我的學號是:‘ . $this->No . ‘ 學生要考試<br/>‘; $this->eat(); //protected的方法 能夠被子類繼承, 但是不能在類的外部存取 // $this->waimao(); //private修飾的方法/屬性 不能被繼承 } } $p = new Person( ‘小強‘, 20 ); $p->speak(); $stu = new Student(‘大強‘, 22, ‘2342343‘ ); $stu->speak(); $stu->test(); // $stu->eat();//報錯 protected的方法 能夠被子類繼承, 但是不能在類的外部存取 // $stu->waimao();//報錯 private修飾的方法/屬性 不能被繼承 更不能在類外訪問?>

5.用類封裝(資料庫連接,資料庫curd操作)

在封裝前先瞭解一下需要用到的php的array知識

    array1:[ ] :空索引(當索引為空白時,預設為該數組原最大索引加1)

<?php    $user = array();    // $user[0] = ‘zhangsan‘;    // $user[2] = ‘zhangsan‘;    // //[] 是在該數組 最大的數字索引上+1    // $user[] = ‘zhangsan‘;    // $user[8] = ‘zhangsan‘;    // $user[] = ‘zhangsan‘;    $user[] = ‘張三‘;    $user[] = ‘lisi‘;    $user[] = ‘wangwu‘;    // print_r( $user );//Array ( [0] => 張三 [1] => lisi [2] => wangwu )    // echo $user;?>

  array2:array_values與array_values與implode

    1.數組名_values:把數組的值取出來儲存在一個數組裡面然後返回

    2.數組名_keys:把數組的鍵取出來儲存在一個數組裡面然後返回

    3.implode:把數組中的所有元素放入一個字串。(相當於js的join)

<?php$user = array(    ‘title‘ => ‘星星‘,    ‘content‘ => ‘小星星‘,    ‘age‘ => 22);    // print_r( array_keys( $user ) );//    // $keys = array_keys( $user );    //implode--->join    // echo implode( ",", $keys );    $values = array_values( $user );print_r($user);echo "</br>";     print_r( $values );//    echo implode( "‘,‘", $values ); //星星,小星星,22?>

  array3:foreach用來遍曆array,count($array)用來擷取array的長度(索引值對的數量)

      foreach用法:foreach(遍曆對象  as 鍵 => 值 ){每次遍曆執行的函數}

    <meta charset="UTF-8">    <?php    $userList = array(        0 => array(            ‘張三‘,            ‘李四‘,        ),        1 => array(            ‘小星星‘,            ‘小強強‘        )    );    // foreach( $userList as $k => $v ){    //     echo $k . ‘--->‘ . $v[0] . ‘--->‘ . $v[1] . ‘<br/>‘;    // }    foreach( $userList as $key => $val ){        // echo $k . ‘--->‘;        echo $key;        foreach( $val as $k2 => $v2 ){            echo ‘---->‘ . $v2;        }        echo ‘<br/>‘;    }    //  $arr = array(    //      0 => 1,    //      3 => 10,    //      5 => 100,    //  );//     foreach( $arr as $key => $val ){//     foreach( $arr as $k => $v ){//         echo $key . ‘-->‘ . $val . ‘<br/>‘;//         echo $val . ‘<br/>‘;//         echo $v . ‘<br/>‘;//     }//     foreach( $arr as $val ){//         echo $val . ‘<br/>‘;    //     }    //  echo count($arr); //3    //$i---> 0, 1, 2     //for迴圈的缺點:不能遍曆 不連續的數字索引 和 字串索引    // for( $i = 0; $i < count( $arr ); $i++ ){        // $arr[0] $arr[1] $arr[2]    //     echo $arr[$i] . ‘<br/>‘;    // }?>

封裝資料庫連接,資料庫curd操作(建立mysql.class.php)

測試時需要建立資料庫sxlxb,表message,列名(msg_id,title,content)

<meta charset="UTF-8"><?php    class Mysql {        private $host; //主機名稱        private $dbName; //資料庫名稱        private $userName; //使用者名稱        private $userPWd; //密碼        public function __construct( $_host, $_dbName, $_userName, $_userPwd ){            $this->host = $_host;            $this->dbName = $_dbName;            $this->userName = $_userName;            $this->userPwd = $_userPwd;            if( !$this->connect() ){                die( mysql_error() );            }            // else{echo "connect is ok";}//測試資料庫是否串連成功            //設定編碼            $this->setCode();            //選擇資料庫            $this->selectDb();        }        public function connect(){            return mysql_connect( $this->host, $this->userName, $this->userPwd );        }        public function setCode(){            $this->query( "set names utf8" );        }                public function selectDb(){            mysql_select_db( $this->dbName );        }        public function query( $sql ){  //執行語句            return mysql_query( $sql );        }        //用來查詢所有的資料        public function getAll( $sql ){            $res = $this->query( $sql );//返回資源            $list = array();            while( $row = mysql_fetch_assoc( $res ) ){//遍曆出每一行資源                // array_push( $list, $row );                $list[] = $row;            }            return $list;        }        //查詢一行資料        public function getRow( $sql ){            $res = $this->query( $sql );            return mysql_fetch_assoc( $res );        }        //查詢某一列的個數        public function getCol( $sql ){            $res = $this->query( $sql );            $row = mysql_fetch_row( $res );            return $row[0];        }        //插入        // INSERT INTO message( title, content ) VALUES ( ‘星星‘, ‘小星星‘ );        // 產品經理 ----> 痛點        /*            add( array(                ‘title‘ => ‘星星‘,                ‘content‘ => ‘小星星‘            ), ‘message‘ );        */        public function add( $data, $tbName ){            $sql = "INSERT INTO {$tbName}("; //insert into message (            $sql .= implode( ‘,‘, array_keys( $data ) ) . " ) VALUES ( ‘";            $sql .= implode( "‘,‘", array_values( $data ) ) . "‘)";            // echo $sql;            return $this->query( $sql );        }        // UPDATE message SET title = ‘hello‘, content = ‘你好‘ WHERE msg_id = 1        public function update( $data, $tbName, $condition ){            $sql = "UPDATE {$tbName} SET ";            foreach( $data as $k => $v ){                $sql .= $k . ‘ = ‘ . "‘$v‘,";            }            // UPDATE message SET title = ‘hello‘, content = ‘你好‘,            $sql = substr( $sql, 0, -1 );             $sql .= " " . $condition;            return $this->query( $sql );        }    }    $mysql = new Mysql( "localhost", "sxlxb", "root", "root" );    // $list = $mysql->getAll( "SELECT * FROM message" );    // $list = $mysql->getAll( "SELECT title FROM message" );    // print_r( $list );    // $msgDetail = $mysql->getRow( "SELECT * FROM message WHERE msg_id = 2" );    // print_r( $msgDetail );    // $total = $mysql->getCol( " SELECT COUNT(msg_id) as total FROM message;" );    // echo $total;    // $res = $mysql->add( array(    //     ‘title‘ => ‘簡化的插入‘,    //     ‘content‘ => ‘現在插入資料非常舒服‘    // ), ‘message‘);    // $res = $mysql->update( array(    //     ‘title‘ => ‘簡化的修改‘,    //     ‘content‘ => ‘現在修改資料非常舒服‘    // ), ‘message‘, ‘WHERE user_id = 8‘ );    // echo $res    // echo ( $res !== false ) ? ‘update is ok‘ : ‘error‘;?>

  

前端小白之每天學習記錄----php(6)物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.