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)