涓�涓ā鍧楀寲鏈嶅姟涓婁笅鏂囨鏋讹紝甯姪妯″潡鍖栫粍缁囧悇绉嶆湇鍔¢�昏緫锛岃鏈嶅姟闂磋皟鐢ㄦ柟寮忔洿鍔犵粺涓�銆�
Ctx 鏄竴涓ā鍧楀寲鏈嶅姟涓婁笅鏂囨鏋讹紝甯姪妯″潡鍖栫粍缁囧悇绉嶆湇鍔¢�昏緫锛岃鏈嶅姟闂磋皟鐢ㄦ柟寮忔洿鍔犵粺涓�銆�/p>
骞虫椂璋冪敤鍏朵粬鏈嶅姟鐨勬柟寮忎竴鑸槸 new XyzService()
鎴栧垯閲囩敤渚濊禆娉ㄥ叆
鐨勬柟寮忓疄渚嬪寲鏈嶅姟锛屽墠鑰呬細瀵艰嚧涓�涓湇鍔¤瀹炰緥鍖栧娆★紝鏈嶅姟鎻愪緵鏂逛笉鑳芥洿濂界殑杩涜鎺у埗锛屽悗鑰呭垯浼氬瓨鍦ㄦ湇鍔′簰鐩镐緷璧栫殑鏃跺�欓�犳垚鍥版壈锛屽鏋滄湇鍔¤鍗曚緥鐨勬椂鍊欎綘杩橀渶瑕佸湪鏈嶅姟鎻愪緵鑰卲rivider鐨勫湴鏂瑰0鏄庢湇鍔′负鍗曚緥銆�/p>
Ctx 鎻愪緵浜嗕竴绉嶆柊鐨勯�夋嫨锛屾瘡涓ā鍧楅兘鍙細琚疄渚嬪寲涓�娆★紝姣忎釜妯″潡鐨勬湇鍔″彧浼氭彁渚涘敮涓�鐨勫叆鍙f毚闇茬粰璋冪敤鏂癸紝妯″潡涓嶆敮鎸佸瀹炰緥锛岃繖鏍峰彲浠ヨ妯″潡鎻愪緵鑰呭彲浠ユ洿瀹规槗杩涜鏈嶅姟鐨勬帶鍒跺拰缁存姢锛屾墍鏈夌殑妯″潡涔嬮棿璋冪敤鏂瑰紡涓�鑷达紝濡傦細
$this->ctx->妯″潡鍚�->鏂规硶()
鍚屾椂Ctx鎻愪緵浜嗗緢鏂逛究鐨勬柟寮忓皢妯″潡鏂规硶rpc鍖栵紝鏂逛究鍗曠嫭閮ㄧ讲鏌愪簺鎺ュ彛锛屾瘮濡傛煇涓帴鍙i鐜囩壒鍒珮闇�瑕佸崟鐙紭鍖栭儴缃茬瓑鎴栧垯杩欎釜鎺ュ彛闇�瑕佽繘琛屼繚瀵嗭紝濡傚姞瀵嗙畻娉曠瓑銆�/p>
-
妯″潡鍖栧紑鍙戯細涓嶅悓鐨勬ā鍧楀彧鑳芥搷浣滆嚜宸辩殑鏁版嵁锛堝寘鎷暟鎹簱鍜岀紦瀛樼瓑锛夛紝闇�瑕佸叾浠栨ā鍧楁暟鎹紝鍙兘璁╁搴旀ā鍧楃殑寮�鍙戜汉鍛樻彁渚涙帴鍙o紝杩欐牱姣忎釜妯″潡鐨勪汉鍙渶瑕佷簡瑙h嚜宸辨ā鍧楃殑瀹炵幇锛屽噺灏戝鏉傚害鍜屾柊浜哄叆鑱屽姞鍏ユā鍧楀紑鍙戠淮鎶ょ殑闅惧害锛堝彧闇�瑕佷簡瑙d粬璐熻矗鐨勬ā鍧楋級锛屽悓鏃跺噺灏戦敊璇殑鍏朵粬妯″潡鏁版嵁鎿嶄綔锛屽洜涓烘湁鐨勬ā鍧楅噰鐢ㄥ紓姝ユ垨鍒欏畾鏃朵换鍔℃垨鍒欑紦瀛樼殑鏂瑰紡锛岀洿鎺ユ搷浣滃搴旀ā鍧楋紝鍙兘浼氬洜涓轰笉浜嗚В涓氬姟鑰屽鑷存暟鎹搷浣滈仐婕忓甫鏉ヨ剰鏁版嵁銆�/p>
-
Ctx鍗曠嫭鎴愪负椤圭洰杩涜閮ㄧ讲锛氬噺灏戜笉鍚岀殑椤圭洰鍏辩敤閫昏緫鐨勬椂鍊欐嫹璐濅唬鐮侊紝濡傛灉鏄瘡涓兘閲囩敤寰湇鍔″噺灏戞嫹璐濅唬鐮佸張浼氬鍔犵綉缁滃紑閿�锛屾墍浠ュ彧闇�瑕佹妸ctx鍙戝竷鍒伴渶瑕佺殑椤圭洰鍗冲彲銆傛墍鏈夌殑椤圭洰渚濊禆鍏卞悓鐨刢tx鏈嶅姟锛屾瘡涓」鐩彧璐熻矗鍙傛暟鐨勮幏鍙栧拰ctx鏈嶅姟鐨勮皟鐢ㄧ粍瑁呭疄鐜颁笟鍔¢�昏緫锛屾瘡涓」鐩疄鐜板弬鏁拌幏鍙栧拰鍝嶅簲杈撳嚭锛屽叿浣撲笟鍔¢�昏緫閮借渚濊禆 ctx 杩涜瀹炵幇銆備负浜嗘柟渚縞tx妯″潡涓殑鏂规硶鐨勫叡鐢紝涓嶅缓璁洿鎺ユ妸
$request
杩欐牱鐨勮姹傚璞′綔涓哄弬鏁颁紶閫掔粰 ctx妯″潡鐨勬柟娉曪紝涔熷氨鏄笉瑕佸湪controller涔嬪鐨勫湴鏂硅繘琛岃緭鍏ュ弬鏁扮殑鑾峰彇锛岃�屾槸鐢ㄥ弬鏁扮殑鏂瑰紡浼犻�掔粰service銆傞」鐩叧绯诲ぇ姒傜粍缁囦负锛�/p>web椤圭洰鏂囦欢澶� api椤圭洰鏂囦欢澶� 鑴氭湰鏂囦欢澶� admin椤圭洰鏂囦欢澶� ctx鏂囦欢澶� (渚涗笂杈规墍鏈夐」鐩叡鐢�)
composer require jetea/ctx -vvv
鍚屾椂鍦�code>composer.json涓0鏄� ctx 鏈嶅姟椤圭洰鐩綍 psr4 瑙勫垯
"autoload": {
"psr-4": {
"Ctx\\": "ctx/"
},
},
鍦ㄨ皟鐢ㄦ湇鍔′箣鍓嶉渶瑕佸厛缂栧啓鏈嶅姟锛屼互涓嬪皢鎻忚堪涓�涓湇鍔$殑缂栧啓杩囩▼銆傛簮鐮佸弬鑰冨弬鑰冿細https://github.com/jetea/ctx/tree/master/tests/ctx
鍙傝�冪洰褰曟爲缁撴瀯濡傦細
ctx 鏍规枃浠跺す
鈹溾攢鈹� Ctx.php Ctx鍏ュ彛绫�
鈹溾攢鈹� Basic/ 鏂囦欢澶�
鈹偮犅� 鈹斺攢鈹� Ctx.php 鍚勪釜Ctx鏈嶅姟鍩虹被
鈹斺攢鈹� Service/ Service鏂囦欢澶癸紝鍖呮嫭鎵�鏈夌殑鏈嶅姟妯″潡
鈹斺攢鈹� Example/ 鏈嶅姟妯″潡1锛欵xample妯″潡
鈹斺攢鈹� Ctx.php 鏈嶅姟妯″潡鍏ュ彛
鈹溾攢鈹� Child/ 妯″潡瀛愮被鏂囦欢澶�
鈹偮犅� 鈹斺攢鈹� Demo.php 妯″潡瀛愮被
鈹斺攢鈹� Example2/ 鏈嶅姟妯″潡2锛欵xample2妯″潡
鈹溾攢鈹� Child/
鈹偮犅� 鈹斺攢鈹� Demo.php
鈹斺攢鈹� Ctx.php
-
鏂板缓鏍规枃浠跺す锛屽悕绉伴殢鎰忥紝濡�
ctx
-
缂栧啓Ctx鍏ュ彛绫�/strong>锛�code>Ctx.php锛屼负Ctx鏈嶅姟鍞竴鍏ュ彛锛屾墍鏈夌殑妯″潡璋冨害閮借閫氳繃姝ょ被瀹炵幇锛屾绫讳负鍗曚緥瀹炵幇銆傚弬鑰�a href="http://222.178.203.72:19005/whst/63/=fhsgtazbnl//jetea/ctx/blob/master/tests/ctx/Ctx.php">https://github.com/jetea/ctx/blob/master/tests/ctx/Ctx.php
<?php namespace Ctx; use Jetea\Ctx\Ctx as BasicCtx; /** * Class Ctx * @property \Ctx\Service\Example\Ctx $Example */ class Ctx extends BasicCtx { /** * ctx 瀹炰緥 */ protected static $ctxInstance; //ctx 鍛藉悕绌洪棿 protected $ctxNamespace = 'Ctx'; }
Note: 蹇呴』鎻愪緵
$ctxInstance
闈欐�佸睘鎬у拰$ctxNamespace
灞炴�э紝璁块棶绫诲瀷蹇呴』涓�code>protected锛岀洰褰曚笅鎵�鏈夌殑绫婚伒寰�code>PSR-4鏍囧噯锛�code>$ctxNamespace鍐冲畾浜嗘枃浠跺す涓嬬殑鍛藉悕绌洪棿锛�code>$ctxInstance鍜�code>$ctxNamespace杩欎袱涓睘鎬ф槸涓轰簡鏀寔澶氫釜ctx鏈嶅姟锛屽彧瑕佺‘淇漜tx鍛藉悕绌洪棿$ctxNamespace
鍊间笉鍚岋紝濡傦細ctx ctx鏍规枃浠跺す 鈹溾攢鈹� Ctx.php Ctx鍏ュ彛绫� 鈹溾攢鈹� Basic/ 鏂囦欢澶� 鈹斺攢鈹� Service/ Service鏂囦欢澶癸紝鍖呮嫭鎵�鏈夌殑鏈嶅姟妯″潡 ctx_1 ctx_1鏍规枃浠跺す 鈹溾攢鈹� Ctx.php Ctx鍏ュ彛绫� 鈹溾攢鈹� Basic/ 鏂囦欢澶� 鈹斺攢鈹� Service/ Service鏂囦欢澶癸紝鍖呮嫭鎵�鏈夌殑鏈嶅姟妯″潡
涓嶈繃寤鸿涓�涓洟闃熷唴灏介噺鏀惧埌涓�涓猚tx鏈嶅姟涓寜鐓фā鍧楄繘琛屽紑鍙戙��/p>
-
鏂板
Basic鏂囦欢澶�/code>锛屽寘鍚� 鎵�鏈夌殑鏈嶅姟妯″潡绫荤殑鍩虹被
绫荤瓑銆�/p>Ctx
锛屼篃鍙互鏀惧叆鍏叡鐨勬湇鍔℃ā鍧楀紓甯�code>Exception -
缂栧啓鎵�鏈夌殑鏈嶅姟妯″潡绫荤殑鍩虹被
Basic/Ctx.php
锛屾柟渚挎墍鏈夌殑妯″潡绫荤户鎵垮疄鐜板叕鍏遍�昏緫澶勭悊鍜屽鐢紝濡傛墍鏈夌殑鏈嶅姟鐨剅pc瀹炵幇绛夛紝鍙傝��a href="http://222.178.203.72:19005/whst/63/=fhsgtazbnl//jetea/ctx/blob/master/tests/ctx/Basic/Ctx.php">https://github.com/jetea/ctx/blob/master/tests/ctx/Basic/Ctx.php<?php namespace Ctx\Basic; use Jetea\Ctx\Basic\Ctx as BasicCtx; /** * Class Ctx * @package Ctx\Basic * * @property \Ctx\Ctx $ctx */ abstract class Ctx extends BasicCtx { protected function invokeRpc($method, $args) { // $this->rpc['host'], // $this->getModName(), // $method, // var_export($args, true) } }
鎵�鏈夌殑Service妯″潡鍏ュ彛绫�/strong>閮藉繀椤荤户鎵挎绫伙紝妯″潡瀛愮被鍙互閫夋嫨鎬х户鎵挎绫伙紝鎵�鏈夌户鎵夸簡姝ょ被鐨勬湇鍔$被閮戒細鎷ユ湁
$ctx
灞炴�э紝浠庤�岃兘鍦ㄦ湇鍔″唴绠�鍗曠殑閫氳繃$this->ctx->妯″潡->鏂规硶()
杩欐牱鐨勬柟寮忔潵璋冪敤鍏朵粬妯″潡鐨勬柟娉曘�傚鏋滈渶瑕侀噰鐢╮pc灏嗕釜鍒湇鍔$嫭绔嬮儴缃插拰浼樺寲绛夛紝鍙互鍦ㄦ绫讳腑閫氳繃瀹炵幇invokeRpc
鏂规硶鏉ュ疄鐜板叿浣撶殑rpc璋冪敤閫昏緫锛岃繖鏍锋墍鏈夌户鎵夸簡姝ゅ熀绫荤殑鏂规硶鍧囧緢瀹规槗瀹炵幇rpc璋冪敤銆�/p> -
鏂板缓
Service鏂囦欢澶�/code>锛屾鏂囦欢澶圭敤浜庡寘鍚墍鏈夌殑妯″潡鍏蜂綋瀹炵幇銆�/p>
-
鏂板缓妯″潡鏂囦欢澶癸紝濡�code>Example锛屼竴鑸ā鍧楀悕璺熶笟鍔℃湁鍏筹紝濡�code>User琛ㄧず鐢ㄦ埛鏈嶅姟妯″潡锛�code>Payment琛ㄧず鏀粯鏈嶅姟妯″潡锛屾鏂囦欢澶逛笅灏嗗瓨鏀炬墍鏈夌殑姝ゆā鍧楃殑鍏蜂綋瀹炵幇銆�/p>
-
缂栧啓Service妯″潡鍏ュ彛绫�/strong>锛屽
Service/Example/Ctx.php
锛屾绫讳负Example
妯″潡鍏ュ彛锛屾绫讳负鍗曚緥瀹炵幇锛屾墍鏈夎皟鐢ㄨ妯″潡鐨勬柟娉曢兘瑕佽蛋姝ょ被杩涜璋冨害褰撳墠妯″潡涓嬬殑鏂规硶鐨勫瓙绫荤殑鏂规硶锛屽弬鑰�a href="http://222.178.203.72:19005/whst/63/=fhsgtazbnl//jetea/ctx/blob/master/tests/ctx/Service/Example/Ctx.php">https://github.com/jetea/ctx/blob/master/tests/ctx/Service/Example/Ctx.php<?php namespace Ctx\Service\Example; use Ctx\Basic\Ctx as BasicCtx; /** * 妯″潡鎺ュ彛澹版槑鏂囦欢 * 澶囨敞锛氭枃浠跺懡鍚嶈窡妯″潡涓殑鍏朵粬绫讳笉鍚岋紝鍥犱负妯″潡鍏ュ彛绫诲彧鑳借瀹炰緥鍖栦竴娆� * 涔熷氨鏄彧鑳界敤ctx->妯″潡 鏉ュ疄渚嬪寲锛屼笉鑳界敤loadC鏉ュ疄渚嬪寲鏇村 */ class Ctx extends BasicCtx { }
璋冪敤ctx鏈嶅姟鎸囪皟鐢⊿ervice妯″潡鏈嶅姟涓嬬殑鏂规硶锛屽彧鑳借皟鐢ㄥ埌妯″潡鐨勫叆鍙g被鏂规硶锛岃繖鏍风殑璋冪敤鏂瑰紡鏄负浜嗘洿濂界殑闄愬埗浜嗘墍鏈夋湇鍔¤皟鐢ㄩ兘瑕佽蛋璋冪敤鐨勬ā鍧椾笅鐨勫叆鍙g被锛屾柟渚跨粺涓�杩涜澶勭悊锛岃皟鐢╟tx鏈嶅姟鍒嗘湇鍔″閮ㄨ皟鐢ㄥ拰鏈嶅姟鍐呴儴璋冪敤锛�/p>
-
Service妯″潡鏈嶅姟鍐呰皟鐢�/p>
$this->ctx->妯″潡->鏂规硶()
-
Service妯″潡鏈嶅姟澶栬皟鐢�/p>
- 瀹炰緥鍖朿tx鏈嶅姟锛屽弬鑰�a href="http://222.178.203.72:19005/whst/63/=fhsgtazbnl//jetea/ctx/blob/master/tests/CtxTest.php">https://github.com/jetea/ctx/blob/master/tests/CtxTest.php
\Ctx\Ctx::getInstance();
- 濡傛灉ctx鏈嶅姟鐨勫疄渚嬩负
$ctx
$ctx->妯″潡->鏂规硶()
-
濡傛灉鏈嶅姟绫诲姞杞藉け璐ワ紝澶氬崐鏄洜涓篶omposer涓病鏈夊0鏄嶤tx鏈嶅姟妯″潡闇�瑕佺殑鍛藉悕绌洪棿
-
鎵�鏈夌殑Service妯″潡鍏ュ彛绫婚兘涓嶅厑璁�/strong>瀹炵幇
__construct
鏂规硶锛屽鏋滈渶瑕佸垵濮嬪寲妯″潡鍙兘瀹炵幇init
鏂规硶锛屾墍鏈夌殑妯″潡鍏ュ彛鍒濆鍖栫殑鏃跺�欓兘浼氭墽琛宨nit鏂规硶锛屽$this->ctx->Example
灏嗕細瀹炰緥User妯″潡鐨勫叆鍙g被\Ctx\Service\Example\Ctx
锛屽悓鏃朵細璋冪敤鍏朵腑鐨�code>init鏂规硶銆�/p> -
Ctx鏈嶅姟瀹炰緥 鍜� 妯″潡鍏ュ彛绫诲疄渚� 閮藉彧浼� 鏈変竴涓紝鍗冲崟渚嬶紝鏂逛究妯″潡杩涜鏇村ソ鐨勫鐞嗐��/p>
-
鎵�鏈夌户鎵夸簡 鎵�鏈夌殑鏈嶅姟妯″潡绫荤殑鍩虹被 鐨勭被锛岄兘浼氭嫢鏈夛細
ctx
灞炴�э紝姝ゅ睘鎬т负ctx鏈嶅姟瀹炰緥锛屾柟渚垮湪鏈嶅姟鍐呰皟鐢ㄥ叾浠栫殑妯″潡鏂规硶- 濡傛灉鍩虹被瀹炵幇浜�code>invokeRpc鏂规硶锛屽垯鎵�鏈夌户鎵跨殑绫婚兘浼氭嫢鏈塺pc瀹炵幇銆�/li>
loadC
鏂规硶锛屾ā鍧楀唴鍔犺浇鍏朵粬绫伙紝妯″潡绫绘墍鏈夐潪鍏ュ彛绫婚兘闇�瑕佹斁鍒�Child
鏂囦欢澶逛笅閫氳繃妯″潡鍐呯殑loadC
鏂规硶杩涜瀹炰緥鍖�/li>
-
鎵�鏈夋ā鍧楀唴鐨勯潪鍏ュ彛绫绘棤璁烘槸鍚︾户鎵� 鎵�鏈夌殑鏈嶅姟妯″潡绫荤殑鍩虹被锛岄兘鑳藉疄鐜�
__construct
鏂规硶锛屼絾鏄户鎵夸簡鍩虹被鐨勮瘽涓�瀹氫細鍦ㄥ疄渚嬪寲鍚庯紝琚皟鐢�init
鏂规硶銆�/p> -
妯″潡鍏ュ彛绫绘垨妯″潡瀛愮被rpc瀹炵幇锛�/p>
-
鎵�鏈夌殑鏈嶅姟妯″潡绫荤殑鍩虹被 瀹炵幇
invokeRpc
鏂规硶 -
妯″潡鍏ュ彛绫绘垨妯″潡瀛愮被缁ф壙 鎵�鏈夌殑鏈嶅姟妯″潡绫荤殑鍩虹被
-
妯″潡鍏ュ彛绫绘垨妯″潡瀛愮被閲嶈浇灞炴��code>$rpc锛屽睘鎬ц闂柟寮忎负
protected
锛屽睘鎬т负鏁扮粍锛屾嫢鏈変袱涓瓧娈�code>host鍜�code>method锛屽叾涓�code>host琛ㄧずrpc鏂规硶鐨勮繙绋媓ost锛�code>method琛ㄧず鍏佽鎵ц鐨剅pc鏂规硶鏁扮粍銆�/p>/** * rpc閰嶇疆 */ protected $rpc = [ 'host' => '', //缃戝叧鍦板潃 'method' => [], //鏂规硶鍚� 鍑忓皯鏃犵敤鐨勮繙绋嬭皟鐢� ];
-
# 鐢–tx瀹炵幇鏈嶅姟妯″潡鍖栫粍缁�
### 涓�鑸殑浠g爜缁勭粐
闅忎究鍐欙紝娌℃湁妯″潡锛屼笉鏂逛究澶嶇敤锛屽ぇ閲忕殑鎷疯礉
### 浼犵粺鐨勬ā鍧楀寲鐨勪唬鐮佺粍缁�
* 鍐欏緢澶氭ā鍧楃被锛屾彁楂樹簡浠g爜澶嶇敤
### 浼犵粺鐨勬ā鍧楃被瀹炰緥鍖栨柟寮�
* 鐩存帴 new
* 渚濊禆娉ㄥ叆
> 璋冪敤鏂硅嚜宸卞幓瀹炰緥鍖栥�傘�備竴涓被琚娆″疄渚嬪寲锛屾垨鍒欓兘瑕佸疄鐜板崟渚嬬瓑
### ctx鏄粈涔�
* Ctx 鍙槸缁勭粐鏈嶅姟妯″潡锛屼笉鏄笟鍔℃鏋讹紝鍙互鏃犵紳寮曞叆鍒版墍鏈夌殑妗嗘灦涓�
* 鏈嶅姟妯″潡鍖栫殑缁勭粐锛屾彁楂樹唬鐮侀噸鐢ㄦ��
* Ctx 瀵筰de鍙嬪ソ锛屽鍔犱簡浠g爜鐨勫彲缁存姢鎬�
* 姣忎釜鏈嶅姟鍏ュ彛缁熶竴涓斾负鍗曚緥锛岃繖鏍锋柟渚垮搴旀湇鍔$殑寮�鍙戣�呰繘琛岄噸鏋勫拰閫昏緫璋冩暣锛屽叆鍙g粺涓�锛屽澶栫粺涓�锛屾案杩滃崟渚嬶紝鏀寔child瀛愭ā鍧楅潪鍗曚緥锛屽瓙妯″潡鍙兘琚ā鍧楀唴鐩存帴璋冪敤锛屼粠鑰岄伩鍏嶇洿鎺ヨ澶栭儴鍏朵粬妯″潡鐩存帴鎿嶄綔
* 鏀寔rpc锛屽彧闇�瑕佺畝鍗曠殑閰嶇疆锛屽嵆鍙皢鏂规硶鍒囨崲涓鸿繙绋媟pc璋冪敤锛岃皟鐢╮pc灏辫窡璋冪敤鏈嶅姟妯″潡鍐呯殑鍏朵粬鏂规硶涓�鏍凤紝璋冪敤鏂规棤鎰熺煡锛屾柟渚挎ā鍧楀紑鍙戣�呴殢鏃舵娊绂绘湰鍦颁唬鐮佷负杩滅▼璋冪敤鐨勬湇鍔″拰澶氫釜鑺傜偣閮ㄧ讲杩涜鎵╁锛�
### 濡備綍骞虫粦鎺ュ叆
### 濡備綍閲囩敤ctx骞虫粦閲嶆瀯鐜版湁浠g爜搴�