麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

php之面向對象(1)

2020-03-24 18:53:38
字體:
來源:轉載
供稿:網友
  •   講到html' target='_blank'>面向對象 先回顧下以前的編程思路,所謂編程思路就是根據知識本質原理通過邏輯推理程序的過程,編程思路,講究的是先明確要做的事情是怎么。離開代碼的情況下,自己也要能明白這一件事情怎么做。而不是把代碼背一遍。跟據要做的事情,去確認各種已知條件,沒有條件的要自己創造條件。也就是:知道條件,知道結果,求過程。 在實際程序中 我們往往要做很多的準備工作 去創造滿足條件,比如要輸出mysql的一段數據我們需要準備分頁計算,才知道要從哪里輸出到哪里,往往一個程序中。一個功能,一個流程,不能滿足整個功能的需要。需要好幾個流程配合才能完成,比如,當網頁打開的時候做什么,當表單提交的時候做什么,沒有提交做什么,數據庫連不上的時候做什么連上的時候做什么。當沒有表單提交來的時候($_POST 為空的時候),我們就顯示表單。有數據提交來的時候,我們就連接數據庫,整理SQL語句,寫入數據庫。然后給用戶一個提示性的頁面。總結下來 ,我們整個程序在思考的時候 就會這么想 程序運行到這里的時候程序需要做什么,怎么做,才能滿足下一個流程的需求,這幾個流程組合起來,才能滿足整個功能的需求,這種思考方式,我們稱之為面向過程,面向過程 總結下來 思考模式有一個共通的特點:什么時候做什么,怎么做,每一個流程 每一步。這就是面向過程。

      其實在我們寫代碼的時候 九成以上都是面向過程,而相對的面向對象 只是一種思考方式的名字,很多的時候我們也會使用面向對象的方式思考 只是自己不知道罷了,以下代碼是一個簡單的例子:

    $file = 'test.txt';//指定打開的文件$fp = fopen($file, 'r');//打開文件$data = fread($fp, 1024);//讀取數據賦值fclose($fp);//關閉文件echo $data;//輸出

    一段代碼對應了一個過程

      我們在讀取數據庫的時候現在很多人應該是這么思考的了。//連接數據庫//查詢數據庫//顯示結果,

      如果是身份驗證。還多一個流程。//連接數據庫//查詢數據庫//對比用戶名和密碼//顯示結果。這個注釋其實就是思路的描述,當我們寫代碼熟練到一定程度的時候,就已經沒必要去一行一行的想了。往往想到一個流程,就是幾行代碼,但是,代碼實際的功能,必須和思考的過程吻合。

    還是上面的一段代碼

    $fp = fopen($file, 'r');$data = fread($fp, 1024);fclose($fp);//整體注釋就是:讀取“文件”的“內容”//如果我換成另一個同樣功能函數
      $file='test.txt';
      $data=file_get_contents($file);

    這個寫法,更符合我們剛才的描述:讀取文件內容。在這里,$file 我們思考的時候,把它看成了一個文件。

      又比如 對于圖形處理過程我們可以理解為:創建一張圖像,往圖像里寫字,往圖像里畫線,輸出圖像,把這個資源量看成這張圖像本身。

      所謂的面向對象就是思考模式的描述,在這種思考模式下我們把要處理的各個東西想象成一個個實體,讀取文件 處理數據 寫入文件 。。創建圖像 在圖像上繪畫 在圖像上寫字 輸出圖像 雖然從代碼本質上來解讀的話它們還是一個個的各種量,這一點自己潛意識清楚就可以了。在思考和描述的時候,要是也一個個這么想。會給思考帶來一定的困難。而用上面的這種思考和描述方式。就簡單得多了,這種思考方式就是面向對象,類似上面面向過程那樣的一句話就是:什么時候 誰 做什么。

      面向過程是:什么時候,做什么,怎么做
      面向對象是:什么時候,什么東西,做什么。在面向對象的時候少了一個怎么做 那是因為面向對象的前提是你已經知道怎么做了,這也是我們為什么總是先學習面向過程 如果我們一件事情 怎么做都不知道,就談不上什么思考模式了。其實對于 圖像處理函數就是基于面向對象思考模式開發的 從頭到尾都是對這張圖片做什么,思考模式,并不局限于書寫方式,并不是說這么寫就是面向對象 那樣寫 就是面向過程,在我們精通了各種功能的實現手法以后。我們往往會通過封裝來重復使用代碼。那怎么封裝更合理呢。這個時候,看思考方式,之前說過。思路描述,要能和代碼吻合。那么封裝就不是隨意的封裝了,封裝好的函數和類, 用起來的時候最好能和思考描述的一樣,是書寫格式。。和思路描述。。盡可能的吻合。

    比如,我把剛才讀取文件的過程。封裝成一個函數
    function read($file) {}//讀取文件$data = read($file);

    符合度百分之百,當然前提你得知道怎么封裝這樣一個函數,在此由于$file是文件名 將它視為文件有點牽強,但我們可以理解為文件的路徑path,所以 最好使用類去封裝。

      用我們日常生活的常識來理解對象的話 對象時一個個實體,那么它對應的就應該有一些特性,比如說文件名是什么,路徑是多少,文件大小多少,比如說我們人 有身高體重名字性別,但是,在我們平時的制作手法里面。我們要知道一個文件大小。就必須用 filesize 函數去取得。這就像我問你身高是多少,你每次都要重新量一下。這和我們常識中的對象,存在一定的差距,使得我們在思考描述代碼的時候。代碼的符合度不夠。 但是類可以暫時記住這些特征值,我們稱之為對象的屬性,屬性,一定是一個準確的值,而過程在類里面稱為方法,類里面 可以聲明一些特殊的變量,這些變量外部不能直接訪問到,這些就是類的屬性,要想訪問一個類的屬性和方法一樣使用-> 但是不需要寫$,假如我們有一個file類 有一個屬性

    $file = new file();echo $file->size;

    用這種方式來訪問一個對象變量的屬性 怎么定義它 我們先不急 慢慢道來 ,我們先回到思路上,今天我們封裝一個文件讀寫類 我們的代碼在需要文件讀寫的時候我們這樣思考:讀取文件 處理數據 寫入文件 ,這個思路正是文件型計數器的思路。

    那么,我們最好的寫法是

    $data = read($file);$data +=1;write($file, $data);
        function read($file) {        $fp = fopen($file, 'r');        $data = fread($fp, filesize($file));        fclose($fp);        return $data;    }        function write($file, $data) {        $fp = fopen($file, 'w');        $rs = fwrite($fp, $data);        fclose($fp);        return $rs;    }

    這兩個函數。都是同屬于文件操作的。我們把它封裝成為類

    class fileclass {        function read($file) {        $fp = fopen($file, 'r');        $data = fread($fp, filesize($file));        fclose($fp);        return $data;    }        function write($file, $data) {        $fp = fopen($file, 'w');        $rs = fwrite($fp, $data);        fclose($fp);        return $rs;    }}

    調用這個類的時候。代碼是這么寫的。

    $fc = new fileclass();//讀取文件$data = $fc->read($file);$data +=1;//寫入文件$fc->write($file, $data);
    然而這里有個和思路不符的地方,上下的兩個$file可以是兩個不同的文件,也就是說我可以從文件A讀取內容寫入到文件B中,但是這樣一來就是兩個文件,就是兩個對象,這個和思路不符,在這個代碼中,我們沒辦法準確的描述出。哪一個量。可以視為這個文件。 盡管使用了類從思維上還是面向的過程,之前說過 作為對象應該有自己的屬性,對象 應該知道自己的屬性,我們希望 用一個實例化的量 來表示這個對象,一個對象 一旦出現就知道自己的屬性,就如我們都知道的姓名和性別,要做到這幾點,我們需要修改類的結構,一開始就知道。。就是說。一開始就得知道文件名。而且一開始就要讀取文件大小。 畢竟,沒有這些過程 不可能憑空得到。在類里面。構造函數可以幫我們做到這一點。構造函數。會在類實例化的時候立即執行。我們可以在構造函數里讀取文件的大小,要讀取文件大小,同樣需要知道文件名。這就需要一個條件。可以通過函數參數傳入。
       public function __construct($file) {        $size = filesize($file);    }
    我們都知道,自定義函數內部變量和外部變量。不是同一個世界的。也就是說。在這里給$size賦值。屬性size是得不到的。 在這里在類的方法里面,要想訪問類的屬性和其他方法。需要用關鍵字 $this->
    <?phpclass fileclass {        public $size = 0;     public $name = '';        public function __construct($file) {        $size = filesize($file);        $this->size = $size;         $this->name = $file;    }    function read($file) {        $fp = fopen($file, 'r');        $data = fread($fp, filesize($file));        fclose($fp);        return $data;    }        function write($file, $data) {        $fp = fopen($file, 'w');        $rs = fwrite($fp, $data);        fclose($fp);        return $rs;    }}$fc = new fileclass('test.txt');echo '文件名:' . $fc->name;echo '文件大小:' . $fc->size;?>

    現在回到read方法 既然他已經有屬性 知道自己名字和大小了 那在這里就不用再傳文件名進去了,

        function read() {        $fp = fopen($this->name, 'r');        $data = fread($fp, filesize($this->size));        fclose($fp);        return $data;    }    
    同樣的。寫入的時候。也不需要再通知文件名了。
    class fileclass {        public $size = 0;    public $name = '';        public function __construct($file) {        $size = filesize($file);        $this->size = $size;        $this->name = $file;    }    function read() {        $fp = fopen($this->name, 'r');        $data = fread($fp, filesize($this->name));        fclose($fp);        return $data;    }        function write($data) {        $fp = fopen($this->name, 'w');        $rs = fwrite($fp, $data);        fclose($fp);        return $rs;    }}
    現在,整個類就變成了這個樣子。回到剛才的計數器代碼。
    $fc = new fileclass('test.txt');//讀取文件$data = $fc->read();$data +=1;echo $data;//寫入文件$fc->write($data);
    由于讀取是一個過程,也就是一個方法。從哪讀取的? $fc $fc此時,可以完全的理解為。就是文件本身了。   總結下:面向對象這種思維方式。講究的是:什么時候,什么東西,做什么 。為了能讓代碼書寫的時候,更符合這種描述方式,我們需要把過程封裝起來。而類。只不過是為了能更準確的符合這種思考描述方式而做的準備性封裝,不是說用類就是在用 面向對象 編程了。一個類寫出來以后。如果在使用的過程中。不符合面向對象的思維方式。。那也只是普通的類,面向對象思維方式。。一定要有準確的對象。。可以把某個量。視為一個實體的東西。也就是“對象” 。歸根到底其實是先有思路才有類的。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 深夜视频在线观看 | 精品xxxx户外露出视频 | 国产一级桃视频播放 | 欧美成人一区二区三区电影 | 正在播放91| asiass极品裸体女pics | 欧美一区在线观看视频 | 玩偶姐姐在线观看免费 | 一级免费大片 | 亚洲网在线 | 九九热在线视频免费观看 | 亚洲精品久久久久久 | 成人福利在线 | 亚洲精品成人久久久 | 久久蜜桃精品一区二区三区综合网 | av人人| 一本一本久久a久久精品综合小说 | 久久草在线看 | 爽爽淫人综合网网站 | 国产精品久久国产精麻豆96堂 | 26uuu成人人网图片 | 久久国产精品99久久人人澡 | 美国av在线免费观看 | lutube成人福利在线观看污 | 72pao成人国产永久免费视频 | 日韩中文字幕三区 | 国产91一区二区三区 | 久色视频网站 | 精品亚洲va在线va天堂资源站 | 成人福利视频 | av手机在线电影 | 懂色av懂色aⅴ精彩av | 久久精品国产一区二区 | 成人午夜精品久久久久久久蜜臀 | 久久影院一区二区三区 | 精国产品一区二区三区 | 久久精品中文字幕一区二区三区 | 亚洲午夜天堂吃瓜在线 | 成年免费大片黄在线观看岛国 | 欧美国产永久免费看片 | 欧美黄色试片 |