<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] ## 【類/對象】相關函數 > [ 類/對象函數參考](http://php.net/manual/zh/ref.classobj.php) > ### 常用的處理函數 * __NAMESPACE __ ==> 當前命令空間 * __autoload ==> 嘗試加載未定義的類 * call_user_method_array ==> 以參數列表的數組,調用用戶方法 * call_user_method ==> 對特定對象調用用戶方法 * class_alias ==> 為一個類創建別名 * method_exists ==> 檢查類的方法是否存在 * class_exists ==> 檢查類是否已定義 * interface_exists ==> 檢查接口是否已被定義 * * get_called_class ==> 后期靜態綁定("Late Static Binding")類的名稱 * get_class_methods ==> 返回由類的方法名組成的數組 * get_class_vars ==> 返回由類的默認屬性組成的數組 * get_class ==> 返回對象的類名 * get_parent_class ==> 返回對象或類的父類名 * * get_declared_classes ==> 返回由已定義類的名字所組成的數組 * get_declared_interfaces ==> 返回一個數組包含所有已聲明的接口 * get_declared_traits ==> 返回所有已定義的 traits 的數組 * get_object_vars ==> 返回由對象屬性組成的關聯數組 * is_a ==> 如果對象屬于該類或該類是此對象的父類則返回 TRUE * is_subclass_of ==> 如果此對象是該類的子類,則返回 TRUE * property_exists ==> 檢查對象或類是否具有該屬性 * trait_exists ==> 檢查指定的 trait 是否存在 * * is_object() 判斷是否是個對象 * instanceof 判斷一個obj是否屬于一個類 > $b instanceof B; * * * * * * ### 魔術方法: 訪問不存在或者權限不夠的屬性的時候,自動觸發的魔術方法 * function __get( $name ){ } 獲取屬性的時候自動觸發 * function __set( $name,$value ){ } 設置屬性..... * function __isset($name){ } * function __unset($name){ } * function __call( ){ } 訪問一個非靜態方法 * function __callStatic( ){ } 訪問一個靜態方法 * function __autoload( ){ } 自動加載 * * spl_autoload_register( callback ); //將用戶自定義的加載函數,注冊到自動加載機制中 * * function __sleep( ){ } 當對象被當做文件保存時會自動觸發的方法 > 該方法要做的事情,就是返回一個需要保存的對象數據的一個數組 > return array($a,$b); > * function __wakeup( ){ } > 當對象是從文件里讀出來進行反序列化得到對象的時候,會自動觸發的方法 > 用來進行資源的初始化 > #### PHP 5.3以后新增的魔術方法 __invoke() 在創建實例后,可以直接調用對象 ``` <?php class testClass{ public function __construct(){ echo '__construct'; } public function __invoke(){ echo '__invoke'; } } $n = new testClass; $n(); // __construct __invoke ``` __callStatic() 它的工作方式類似于 __call() 魔術方法,__callStatic() 是為了處理靜態方法調用,它必須是公共的,并且必須被聲明為靜態的。 ``` class A { public function __call($name, $args) { } public static function __callStatic($name, $args) { } } ``` ### 序列化 * file_put_contents(‘obj.txt’ , serialize($obj)); ### 反序列化 * unserialize ;將對應的序列化字符串,反過來構造成原來的數據類型。 > $str = file_get_contents(‘obj.txt’) > unserialize( $str ); 反序列化 > ### 接口 作用 :專門用于規范整個項目的設計接口的工具稱之為接口 內容:只能是(常量 + 抽象方法) * 定義語法:interface 接口名{ } * 實現接口:implements 接口名{ } * 實現多接口 :class C implements 接口1,接口2{ } * 接口繼承接口 :interface 新接口 extends 舊接口{ } ### 對象遍歷 對象的遍歷其實就是遍歷對象的屬性(共有屬性),利用foreach遍歷 * * * * * #### 常見的修飾符: 1. public 2. protected 保護權限(只有自己和子類可以使用) 3. private 私有屬性(子類也不可使用) 4. static 靜態方法 5. abstract 修飾類(抽象類) > 只能被繼承的類,不能被實例化 > 子類必須實現父類的抽象方法 > 用于規范團隊協作能力 > 6. final > 修飾類 :該類不能被繼承。 > 修飾方法:不允許子類重寫 > 7.** 注意 : 子類重寫父類方法時,權限一定要比父類開放** #### 構造方法 * __construct( ) { } 相當于JS中的構造函數 #### 晰構方法 * __destruct( ){ } 對象釋放前自動調用此函數(用于釋放一些資源) #### 繼承 extends * 對象->成員 * 類::成員 * parent::成員 常用parent來代替父類類名,來調用父類的方法 * self:: 代表的是當前方法所定義的類空間 * $this 代表當前訪問的對象 #### 終止腳本執行 * return die exit * * * * * ## 自動加載類__autoload() 在編寫面向對象程序時,常規做法是將每一個類保存為一個PHP源文件。當在一個PHP文件中需要調用一個類時很容易就可以找到,然后通過include(或require)把這個文件引入就可以了。不過有的時候,在項目中文件眾多,要一一將所需類的文件include進來,是一個很讓人頭疼的事。 PHP5提供了一個__autoload()來解決這個問題。當new實例化一個不存在的類時,則自動調用此函數“__autoload()”,并將類名作為參數傳入此函數。我可以使用這個實現類的自動加載。 在組織定義類的文件名時,需要按照一定的規則,最好以類名為中心,加上統一的前綴或后綴形成文件名:class_student.php 或 student_class.php 或 student.php ``` // demo.class.php <?php class Demo { function two() { echo "222222222222222<br>"; } } ``` ``` // hello.class.php <?php class Hello { function three() { echo "3333333333333333<br>"; } } ``` ``` // test.class.php <?php class Test { function one() { echo "1111111111<br>"; } } ``` ``` // test.php <?php /* * 只要在這個腳本中, 需要加載類的時候(必須用到類名),就會自動調用這個方法。 */ function __autoload($classname) { echo $classname."<br>"; //Test test.class.php include strtolower($classname) . '.class.php'; } $t = new Test(); $t -> one(); $d = new Demo(); $d-> two(); $h = new Hello(); $h -> three(); World::four(); World::four(); World::four(); World::four(); World::four(); World::four(); ``` ``` // world.class.php <?php class World { static function four() { echo "44444444444444<br>"; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看