2013-02-14 31 views
0

使用spl_autoload_register,可以自動加載類。讓我們用兩個文件舉一個簡單的例子:使用spl_autoload_register處理單個文件中的多個類

的index.php

<?php 
    spl_autoload_extensions (".php"); 
    spl_autoload_register(); 

    $class = new \kitchen\oven; 

    var_dump ($class); 
    var_dump (new kitchen\Microwave); 
    var_dump (new kitchen\Oven); 
?> 

廚房/ oven.php

<?php 
    namespace kitchen { 
     class Microwave { 
      private $potency; 

      public function get_potency() {return $this->potency;} 
      public function set_potency ($potency) {$this->potency = $potency;} 
     } 

     class Oven { 
      private $temperature; 

      public function get_temperature() {return $this->temperature;} 
      public function set_temperature ($temperature) {$this->temperature = $temperature;} 
     } 
    } 
?> 

運行$ php index.php給出了下面的輸出:

object(kitchen\Oven)#1 (1) { 
    ["temperature":"kitchen\Oven":private]=> 
    NULL 
} 
object(kitchen\Microwave)#2 (1) { 
    ["potency":"kitchen\Microwave":private]=> 
    NULL 
} 
object(kitchen\Oven)#2 (1) { 
    ["temperature":"kitchen\Oven":private]=> 
    NULL 
} 

一切都好,我唯一關心的是命名。我* 必須 *提名我的文件與該文件中的任何類相同的名稱。有沒有什麼方法可以讓我使用更通用的名稱?我希望我可以使用「kitchen/objects.php」而不是「kitchen/oven.php」。

謝謝。

+0

請把每個類放在一個單獨的文件中。並閱讀手冊。 – 2013-02-14 19:17:40

回答

1

我可以考慮的唯一方法是將所有PHP文件包含在spl-autoload-register方法的名稱空間目錄中。您的自動加載方法只能運行一次,但其潛在負載比您預期和/或需要的要多得多。

我認爲最好的做法是每個文件只有一個類,並且文件名共享類的名稱。是的,你有更多的文件,但它簡化了重構,並使其他開發人員可以更輕鬆地處理文件結構。

+0

我想這是唯一的方法。謝謝=) – Caio 2013-02-20 14:05:13