在使用上有幾個要注意的事情:

  • 使用 use 敘述必須至少有一項用::串接
use test; // 這是錯的
use test::test1; // OK

  • 上述的的敘述中,若用::來分隔,最後一項不可相同,若相同則必須用 as 來設定別名
use test::test1::test;
use test::test2::test; // 這是錯的
use test::test2::test as test0; // OK

  • 命名空間不可使用關鍵字或保留字
use test::class; // 這是錯的
use test::_class; // OK

  • 透過字串變數來 new 一個物件時,字串變數必須為完整的類別
use test::test1;
$class1 = 'test1::_class';
$class2 = 'test::test1::_class';
$obj1 = new $class1();   //   這是錯的
$obj2 = new $class2();   //   OK
這當中我個人覺得最嚴重的問題是,命名空間不可以使用關鍵字或保留字這項限制,如此一來將可用的詞彙縮減掉了,實在是很不方便~
最明顯的影響是 interface 一詞,這在 ZF 的命名中是非常常見的,目前的解法是加底線、使用縮寫,或是改用其他的詞彙。
不過 interface 這個詞彙是電腦的專有名詞,目前在物件導向中,並無其他的詞彙可替代,實在是很傷腦筋。
arrow
arrow
    全站熱搜

    HACGIS 發表在 痞客邦 留言(0) 人氣()