国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 PHP聚合耦合?解決方案

PHP聚合耦合?解決方案

Jun 13, 2016 pm 01:33 PM
function gt limit order where

PHP聚合耦合???
這是一個通用模型接口:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->interface API{
  public function main();
  public function params($value);
}

然后,一般模型類繼承它:
PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->class test implements API {
  public function main(){
    echo 'hello world!';
}
  public function params($value){
   var_dump($value);
}
}

前端控制器,解析了URL后實例化模型類,調(diào)用接口,傳遞模型數(shù)據(jù):
PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->class Control{
private function __construct(){
  self::Router();
  $obj = new self::$Model();
  self::_Interface($obj);
}

public static _Interface(API $obj){
  $obj -> main();
  $obj -> params();
}
}



這是我做的簡單的耦合結(jié)構(gòu),但是,這只是相對于控制器和模型類之間的耦合,而且是通用類,如果是特殊類還得使用特殊的接口和控制器,但問題不在這,問題在于我想讓模型之間也通過接口交互(數(shù)據(jù)耦合?),但是想了很多也沒有實際的解決辦法,該怎樣做這個接口呢???
比如,我需要調(diào)用一個數(shù)據(jù)庫類的函數(shù),一般情況下是直接調(diào)用:
? $db = db::main();
? #db -> Query(***********************);
但是,這不符合低耦合概念,我只要一改Query();方法就完蛋了,有什么辦法能拉取數(shù)據(jù)??
或者說,給個數(shù)據(jù)耦合的實例也行,自己慢慢研究算了....
謝謝啦!
(注:我知道,可能會有人說上面的代碼不過完善什么的?的確,我是把前端控制器的一些東西都集成起來了,但這不是我今天討論的焦點,如果給大家?guī)砹艘曈X上的不便,請見諒)

------解決方案--------------------
說是實話非常不明白你到底要做什么。。。

但是數(shù)據(jù)層要交互的話,明顯應該通過控制層來做,否則要控制層做什么?因為只有控制層知道數(shù)據(jù)之間有什么具體業(yè)務邏輯上的關(guān)系,而model僅僅應該關(guān)心的是自己的一畝三分地,超出這個范圍之外的都應該交給上層處理,這樣才是降低了耦合!

另外提到的$db->query的問題,明顯可以通過抽離字段、條件、排序等,將query轉(zhuǎn)換成

$db->select()->where()->order()->limit()

下面有2種方式:

1 然后接著抽象

$db::fetch($where, $order, $limit) {
?return $db->select('*')->where($where)->order()->limit();

}

調(diào)用的時候

$db = db::main();
$db->fetch($where, $order, $limit);

2 或者可以封裝一個底層的model基類

basemodel::fetch($where, $order, $limit) {
$db = db::main();
?return $db->select('*')->where($where)->order()->limit();

}

模型基礎
class test extends basemodel implements API {?
function dothing(){
parent::fetch($where, $order, $limit);
}
}

沒有明白這個和數(shù)據(jù)耦合有什么關(guān)系,這僅僅是調(diào)用db的封裝!
------解決方案--------------------
2樓得說的有理,我個人認為降低耦合的辦法就是顯示層只負責顯示,邏輯處理就交個業(yè)務邏輯層,數(shù)據(jù)訪問層只管處理數(shù)據(jù),個做個的事!
關(guān)于數(shù)據(jù)庫類得問題,我建議你去看看uchome的數(shù)據(jù)庫類,我覺得他的類寫得還不錯,跟2樓說的比較相似!
------解決方案--------------------
既然是控制器的基類??刂破鞑欢伎梢宰裱愄峁┑臉藴蕡?zhí)行數(shù)據(jù)?
------解決方案--------------------
我以為你應經(jīng)被各種名詞帶入到一個誤區(qū)了
你實際上是想在各個功能模塊間傳遞某中信息
其實這是很容易實現(xiàn)的一種機制,就是操作系統(tǒng)中廣泛使用的事件驅(qū)動或消息驅(qū)動
一個模塊將自己的需求廣播出去,能夠?qū)崿F(xiàn)此需求的模塊就此需求返回需要的數(shù)據(jù)
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
華為GT3 Pro和GT4的差異是什么? 華為GT3 Pro和GT4的差異是什么? Dec 29, 2023 pm 02:27 PM

許多用戶在選擇智能手表的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什么區(qū)別,下面就就給大家介紹一下二者。華為GT3pro和GT4有什么區(qū)別一、外觀GT4:46mm和41mm,材質(zhì)是玻璃表鏡+不銹鋼機身+高分纖維后殼。GT3pro:46.6mm和42.9mm,材質(zhì)是藍寶石玻璃表鏡+鈦金屬機身/陶瓷機身+陶瓷后殼二、健康GT4:采用最新的華為Truseen5.5+算法,結(jié)果會更加的精準。GT3pro:多了ECG心電圖和血管及安

Laravel中take和limit的使用方法詳解 Laravel中take和limit的使用方法詳解 Mar 10, 2024 pm 05:51 PM

《Laravel中take和limit的使用方法詳解》在Laravel中,take和limit是兩個常用的方法,用于在數(shù)據(jù)庫查詢中限制返回的記錄數(shù)。雖然它們的作用類似,但在具體的使用場景中有一些細微的區(qū)別。本文將詳細解析這兩個方法的用法,并提供具體的代碼示例。一、take方法在Laravel中,take方法用于限制返回的記錄數(shù),通常結(jié)合orderBy方法一起

修復:截圖工具在 Windows 11 中不起作用 修復:截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

為什么截圖工具在Windows11上不起作用了解問題的根本原因有助于找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已打開:這可以防止截圖工具打開。應用程序損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅(qū)動程序:不兼容的驅(qū)動程序可能會干擾截圖工具。來自其他應用程序的干擾:其他正在運行的應用程序可能與截圖工具沖突。證書已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數(shù)用戶,不需要任何特殊的技術(shù)知識。1.更新窗口和Microsoft應用商店應用程

function是什么意思 function是什么意思 Aug 04, 2023 am 10:33 AM

function是函數(shù)的意思,是一段具有特定功能的可重復使用的代碼塊,是程序的基本組成單元之一,可以接受輸入?yún)?shù),執(zhí)行特定的操作,并返回結(jié)果,其目的是封裝一段可重復使用的代碼,提高代碼的可重用性和可維護性。

Laravel 集合中的 Where 方法實用指南 Laravel 集合中的 Where 方法實用指南 Mar 10, 2024 pm 04:36 PM

Laravel集合中的Where方法實用指南在Laravel框架的開發(fā)過程中,集合(Collection)是一個非常有用的數(shù)據(jù)結(jié)構(gòu),它提供了豐富的方法來操作數(shù)據(jù)。其中,Where方法是一個常用的篩選方法,能夠根據(jù)指定條件來過濾集合中的元素。本文將介紹Laravel集合中Where方法的使用,通過具體的代碼示例來演示其用法。1.基本用法Where方法的

如何修復無法連接到iPhone上的App Store錯誤 如何修復無法連接到iPhone上的App Store錯誤 Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步驟檢查蘋果的系統(tǒng)狀態(tài):在深入研究復雜的解決方案之前,讓我們從基礎知識開始。問題可能不在于您的設備;蘋果的服務器可能會關(guān)閉。訪問Apple的系統(tǒng)狀態(tài)頁面,查看AppStore是否正常工作。如果有問題,您所能做的就是等待Apple修復它。檢查您的互聯(lián)網(wǎng)連接:確保您擁有穩(wěn)定的互聯(lián)網(wǎng)連接,因為“無法連接到AppStore”問題有時可歸因于連接不良。嘗試在Wi-Fi和移動數(shù)據(jù)之間切換或重置網(wǎng)絡設置(“常規(guī)”>“重置”>“重置網(wǎng)絡設置”>設置)。更新您的iOS版本:

MySQL.proc表的作用和功能詳解 MySQL.proc表的作用和功能詳解 Mar 16, 2024 am 09:03 AM

MySQL.proc表的作用和功能詳解MySQL是一種流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者在使用MySQL時常常會涉及到存儲過程(StoredProcedure)的創(chuàng)建和管理。而MySQL.proc表則是一個非常重要的系統(tǒng)表,它存儲了數(shù)據(jù)庫中所有的存儲過程的相關(guān)信息,包括存儲過程的名稱、定義、參數(shù)等。在本文中,我們將詳細解釋MySQL.proc表的作用和功能

深入探討Laravel中take和limit的不同之處 深入探討Laravel中take和limit的不同之處 Mar 10, 2024 pm 01:00 PM

在Laravel中,我們經(jīng)常會用到一些方法來限制查詢結(jié)果的數(shù)量,其中包括take和limit兩個方法。雖然它們都可以用來限制查詢結(jié)果的數(shù)量,但它們之間確實有一些細微的區(qū)別。在本文中,我們將深入探討take和limit在Laravel中的不同之處,并通過具體的代碼示例來加以說明。首先,讓我們來看一下take方法。take方法是Eloquent的一部分,通常用于

See all articles