php namespace 繼承 demo
index.php
<?php include 'testclass.php'; $xxx = new sm1\testclass; sm\pre_var_dump( $xxx->get() ); sm\pre_var_dump( $xxx->test ); sm\pre_var_dump( $xxx::訂單狀態_已完成 ); sm\pre_var_dump( sm1\testclass::訂單狀態_已完成 ); $xxx = new sm2\testclass; sm\pre_var_dump( $xxx->get() ); sm\pre_var_dump( $xxx->test ); sm\pre_var_dump( $xxx::訂單狀態_已完成 ); sm\pre_var_dump( sm2\testclass::訂單狀態_已完成 ); use sm1\testclass as t1; use sm2\testclass as t2; $xxx = new t1; sm\pre_var_dump( $xxx->get() ); sm\pre_var_dump( $xxx->test ); sm\pre_var_dump( $xxx::訂單狀態_已完成 ); $xxx = new t2; sm\pre_var_dump( $xxx->get() ); sm\pre_var_dump( $xxx->test ); sm\pre_var_dump( $xxx::訂單狀態_已完成 ); use sm1\testclass; // use sm2\testclass; $xxx = new testclass; sm\pre_var_dump( $xxx->get() ); sm\pre_var_dump( $xxx->test ); sm\pre_var_dump( $xxx::訂單狀態_已完成 ); sm\pre_var_dump(sm1\testclass::get_add(10)); // 只是一些計算 可以 sm\pre_var_dump(sm1\testclass::訂單狀態_已完成); // sm\pre_var_dump(sm1\testclass::test); //未實體化 無法顯示變數 // sm\pre_var_dump(sm1\testclass::get()); //未實體化 無法顯示變數
testclass.php
<?php namespace sm; function pre_var_dump($value) { echo "<pre>"; var_dump($value); echo "</pre>"; } class test_extends { const 訂單狀態_已完成 = 1; // 常量 var $test; // 變數 function __construct() { $this->test = 'sm'; } public function get() { return $this->test; } public function get_add($in) { $in +=100; return $in; } } namespace sm1; use sm; class testclass extends sm\test_extends { function __construct() { $this->test = 'sm1-aaa'; } } namespace sm2; use sm; class testclass extends sm\test_extends { function __construct() { $this->test = 'sm2-bbb'; } }
結果:
string(7) "sm1-aaa" string(7) "sm1-aaa" int(1) int(1) string(7) "sm2-bbb" string(7) "sm2-bbb" int(1) int(1) string(7) "sm1-aaa" string(7) "sm1-aaa" int(1) string(7) "sm2-bbb" string(7) "sm2-bbb" int(1) string(7) "sm1-aaa" string(7) "sm1-aaa" int(1) int(110) int(1)