PHP與UML類圖: PHP and UML Class Diagrams
Jun 21, 2016 am 09:14 AM這篇短文寫的不錯,用PHP來解釋UML(或者反過來說)可以說是一個創(chuàng)新了,通過這篇文章,我也發(fā)現(xiàn)了一個好站: www.phppatterns.com 。各UML術(shù)語的翻譯來源于我正在看的《UML用戶指南(The Unified Modeling Language User Guide)》一書。
UML(Unified Modeling Language, 統(tǒng)一建模語言)是一種通過圖的方式表示軟件的機制。本質(zhì)上它允許我們通過畫圖來設(shè)計我們的程序,并且如果有相應(yīng)的工具,我們甚至可以從圖來直接產(chǎn)生代碼。在這篇文章里,我們將來看看PHP代碼如何通過使用UML類圖(class diagram)的方式表現(xiàn)出來。
我們將直接開始,假設(shè)你已經(jīng)具備了UML的知識,并列舉一些PHP代碼和它們對應(yīng)的UML表示作為例子——但這并不是對類圖的一個完整的分析。
如果你尚未接觸過UML,在你開始閱讀前可以補充一些知識,我們收集了一些資源列在這篇文章的末尾。
[Inheritance 繼承關(guān)系]
PHP關(guān)鍵字extends允許一個類(子類)繼承于另一個類(父類)。
class Senior {
}
class Junior extends Senior {
}
?>
UML方式表示如下:
請注意,三角形在父類這邊。
[Associations 關(guān)聯(lián)關(guān)系]
關(guān)聯(lián)關(guān)系(Associations)發(fā)生于兩個不存在關(guān)系但也許需要互相訪問的類之間,比如Model(模型)和View(視圖),View需要Model提供數(shù)據(jù)以進行顯示。有幾種不同的關(guān)聯(lián)類型:
*Aggregation* 聚合
聚合(Aggregation)是當一個類(下面例子為Model)訪問另一個類(下面例子為Dao)時,第二個類(Dao)也許已經(jīng)被外部實例化($dao)了 。如果第一個對象($model)“掛了”,第二個對象($dao)仍然會繼續(xù)“活著”。這在涉及數(shù)據(jù)訪問對象(data access objects)時很常見,它們也許會被傳遞給很多對象,這些對象就算“掛了”數(shù)據(jù)訪問對象也依然“健在”。
這種方式正常地解釋了第一個類(Model)控制第二個類(Dao)的一部分。
舉個例子:
class Dao {
function getSomething() {
}
}
class Model {
var $dao;
function Model (& $dao) {
$this->dao=& $dao;
}
function doSomething () {
$this->dao->getSomething();
}
}
$dao=new Dao;
$model=new Model($dao);
$model->doSomething();
?>
在UML中表示為:
空心菱形在控制類這邊。
*Composition* 組合
組合(Composition)發(fā)生于當于一個類(例子中為View)將另一個類(例子中為LinkWidget)實例化,這樣當前者(View)“掛了”時后者()也跟著“玩完”的情況。
換句話說,第一個類控制了第二個類的全部。
下面是PHP中的一個例子:
class LinkWidget {
function Display () {
}
}
class View {
var $linkWidget;
var $page;
function View () {
$this->linkWidget=new LinkWidget;
}
function renderPage () {
$this->page=$this->linkWidget->display()
}
}
?>
在UML中用下圖表示:
實心菱形在控制類這邊。
[Messages 消息]
消息(Messages)發(fā)生于一個類(例子中為View)同其它類(例子中為HtmlUtils)“交流”而不控制它(HtmlUtils)的實例的時候。這些類之間的關(guān)系同樣是關(guān)聯(lián)關(guān)系(association)。
在PHP中通常發(fā)生于操作符 :: 使用的時候。例如:
譯注: 我覺得這種方式類似于C++中HtmlUtils類中的成員函數(shù)unHtmlEntities()為static的情況,這樣就無需實例化HtmlUtils就可以直接通過"類名::成員函數(shù)名"的方式(HtmlUtils::unHtmlEntities())來調(diào)用了。
class HtmlUtils {
function unHtmlEntities ($str) {
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($str, $trans_tbl);
}
}
class View {
function renderPage {
$text=HtmlUtils::unHtmlEntities($text);
}
}
?>
這將表示為:
該消息從View發(fā)給HtmlUtils.(單向發(fā)送)
同樣,消息也可以雙向發(fā)送。
class Debug {
function display () {
echo ($this->errorMsg);
}
}
class SomeClass {
var $errorMsg='This is an error message';
function someFunction () {
if ( DEBUG == 1 ) {
Debug::display();
}
}
}
define ('DEBUG',1);
$someClass= &new SomeClass;
$someClass->someFunction();
?>
[輸出信息: "This is an error message"]
這里 SomeClass 發(fā)送一個消息給 Debug,Debug 訪問了SomeClass 的 $errorMsg 屬性。
[Resources 資源]
Introduction to UML from the Object Management Group
Posideon UML - a tool for drawing UML diagrams and generating Java (sadly no PHP), the community edition being free to use. Based on Argo UML, an open source project.
Object Mentor on UML
A UML Reference Card

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Concepts et instances de classes et méthodes Classe (Class) : utilisé pour décrire une collection d'objets avec les mêmes propriétés et méthodes. Il définit les propriétés et méthodes communes à chaque objet de la collection. Les objets sont des instances de classes. Méthode : Fonction définie dans la classe. Méthode de construction de classe __init__()?: La classe possède une méthode spéciale (méthode de construction) nommée init(), qui est automatiquement appelée lorsque la classe est instanciée. Variables d'instance?: dans la déclaration d'une classe, les attributs sont représentés par des variables. Ces variables sont appelées variables d'instance. Une variable d'instance est une variable modifiée avec self. Instanciation : Créez une instance d'une classe, un objet spécifique de la classe. Héritage?: c'est-à-dire qu'une classe dérivée (derivedclass) hérite de la classe de base (baseclass)

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Class est un mot-clé en python, utilisé pour définir une classe. La méthode de définition d'une classe : ajoutez un espace après la classe puis ajoutez le nom de la classe ; règles de nom de classe : mettez la première lettre en majuscule, utilisez la casse camel. nommage, tel que [class Dog()].

jQuery est une bibliothèque JavaScript classique largement utilisée dans le développement Web. Elle simplifie les opérations telles que la gestion des événements, la manipulation des éléments DOM et l'exécution d'animations sur les pages Web. Lorsque vous utilisez jQuery, vous rencontrez souvent des situations dans lesquelles vous devez remplacer le nom de classe d'un élément. Cet article présentera quelques méthodes pratiques et des exemples de code spécifiques. 1. Utilisez les méthodes RemoveClass() et AddClass(). JQuery fournit la méthode RemoveClass() pour la suppression.

Erreur Vue?: impossible d'utiliser v-bind pour lier correctement la classe et le style, comment le résoudre?? Dans le développement de Vue, nous utilisons souvent la directive v-bind pour lier dynamiquement la classe et le style, mais nous pouvons parfois rencontrer des problèmes, comme l'incapacité d'utiliser correctement v-bind pour lier la classe et le style. Dans cet article, je vais vous expliquer la cause de ce problème et vous proposer une solution. Tout d’abord, comprenons la directive v-bind. v-bind est utilisé pour lier V

Après que des problèmes soient survenus dans de nombreuses bourses centralisées, de plus en plus d’investisseurs en cryptomonnaies ont commencé à transférer des actifs vers des portefeuilles froids afin de réduire les risques posés par les bourses centralisées. Cet article présente Trezor, le premier fournisseur de portefeuilles froids au monde. Depuis le lancement du premier portefeuille froid en 2014, il a été vendu dans de nombreux pays du monde. Les produits de Trezor incluent le Model One lancé en 2014 et la version avancée Model T lancée en 2018. Ce qui suit continuera à présenter les différences entre ces deux produits et les autres portefeuilles froids. Qu'est-ce que le portefeuille froid Trezor ? En 2014, Trezor a lancé le premier portefeuille froid ModelOne. En plus des devises courantes BTC, ETH, USDT et autres, le portefeuille prend également en charge plus de 1 000 autres devises.
![Comment résoudre l'erreur '[Vue warn]: v-bind:class/ :class'](https://img.php.cn/upload/article/000/465/014/169300902772563.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Comment résoudre l'erreur ? [Vuewarn]:v-bind:class/:class ? Au cours du processus de développement de l'utilisation de Vue, nous rencontrons souvent des invites d'erreur. L'une des erreurs courantes est ? [Vuewarn]:v-bind:class. Erreur "/:classe". Ce message d'erreur appara?t généralement lorsque nous utilisons l'attribut v-bind:class ou :class, indiquant que Vue ne peut pas analyser correctement la valeur de classe que nous avons définie. Alors, si

Lors de l’écriture de code PHP, l’utilisation de classes est une pratique très courante. En utilisant des classes, nous pouvons encapsuler les fonctions et les données associées dans une seule unité, rendant le code plus clair, plus facile à lire et à maintenir. Cet article présentera en détail l'utilisation de PHPClass et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre comment appliquer des classes pour optimiser le code dans des projets réels. 1. Créer et utiliser des classes En PHP, vous pouvez utiliser le mot-clé class pour définir une classe et définir les propriétés et méthodes de la classe.
