php namespace 繼承 demo

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)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *