PHP 面向对象编程和设计模式 (5)_PHP教程
PHP高级程序设计 学习笔记 2014.06.12
命名空间概述
PHP 在 5.3.0 以后的版本开始支持命名空间。什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。下面是一个说明 PHP 命名空间语法的示例:
定义命名空间
虽然任意合法的PHP代码都可以包含在命名空间中,但只有三种类型的代码受命名空间的影响,它们是:类,函数和常量。命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。另外,与PHP其它的语言特征不同,同一个命名空间可以定义在多个文件中,即允许将同一个命名空间的内容分割存放在不同的文件中。当然你也可以在同一个文件中定义多个命名空间。
<span>namespace</span><span> MyProject; </span><span>class</span><span> MyClass { #code... }</span>
定义子命名空间:与目录和文件的关系很象,PHP 命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义:
<span>namespace</span><span> MyProject\helper\http; </span><span>class</span><span> MyClass { #code... }</span>
在同一个文件中定义多个命名空间:在同一个文件中声明多个命名空间有两种方式,不过在实际编程实践中,非常不提倡在同一个文件中定义多戈命名空间。这种方式的主要用于将多个 PHP 脚本合并在同一个文件中。下面列出第一种方法。
<span>namespace</span><span> MyProject\helper\http; </span><span>class</span><span> MyClass { #code... } </span><span>namespace</span><span> MyProject\helper\request; </span><span>class</span><span> MyClass { #code... }</span>
不过强烈不建议使用这种方法,可以参考下面的大括号定义法:
<span>namespace</span><span> MyProject\helper\http; { </span><span>class</span><span> MyClass { #code... } } </span><span>namespace</span><span> MyProject\helper\request; { </span><span>class</span><span> MyClass { #code... } }</span>
PHP 命名空间中的元素使用
在讨论如何使用命名空间之前,必须了解 PHP 是如何知道要使用哪一个命名空间中的元素的。类名可以通过三种方式引用:
使用命名空间:别名/导入
允许通过别名引用或导入外部的完全限定名称,是命名空间的一个重要特征。PHP 命名空间支持 有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名。在PHP中,别名是通过操作符 use 来实现的。
注意PHP不支持导入函数或常量。
<span>namespace</span><span> foo; use My\Full\Classname </span><span>as</span><span> Another; </span><span>//</span><span> 下面的例子与 use My\Full\NSname as NSname 相同</span> <span>use My\Full\NSname; </span><span>//</span><span> 导入一个全局类</span> use \ArrayObject;
名称解析规则
在说明名称解析规则之前,我们先看一些重要的定义:
名称解析遵循下列规则:
Example 名称解析示例
<?<span>php namespace A; </span><span>use</span> B\D, C\E <span>as</span><span> F; </span><span>//</span><span> 函数调用</span> <span> foo(); </span><span>//</span><span> 首先尝试调用定义在命名空间"A"中的函数foo() // 再尝试调用全局函数 "foo"</span> <span> \foo(); </span><span>//</span><span> 调用全局空间函数 "foo" </span> <span> my\foo(); </span><span>//</span><span> 调用定义在命名空间"A\my"中函数 "foo" </span> <span> F(); </span><span>//</span><span> 首先尝试调用定义在命名空间"A"中的函数 "F" // 再尝试调用全局函数 "F" // 类引用</span> <span>new</span> B(); <span>//</span><span> 创建命名空间 "A" 中定义的类 "B" 的一个对象 // 如果未找到,则尝试自动装载类 "A\B"</span> <span>new</span> D(); <span>//</span><span> 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象 // 如果未找到,则尝试自动装载类 "B\D"</span> <span>new</span> F(); <span>//</span><span> 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象 // 如果未找到,则尝试自动装载类 "C\E"</span> <span>new</span> \B(); <span>//</span><span> 创建定义在全局空间中的类 "B" 的一个对象 // 如果未发现,则尝试自动装载类 "B"</span> <span>new</span> \D(); <span>//</span><span> 创建定义在全局空间中的类 "D" 的一个对象 // 如果未发现,则尝试自动装载类 "D"</span> <span>new</span> \F(); <span>//</span><span> 创建定义在全局空间中的类 "F" 的一个对象 // 如果未发现,则尝试自动装载类 "F" // 调用另一个命名空间中的静态方法或命名空间函数</span> <span> B\foo(); </span><span>//</span><span> 调用命名空间 "A\B" 中函数 "foo"</span> <span> B</span>::foo(); <span>//</span><span> 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法 // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B"</span> <span> D</span>::foo(); <span>//</span><span> 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法 // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D"</span> <span> \B\foo(); </span><span>//</span><span> 调用命名空间 "B" 中的函数 "foo" </span> <span> \B</span>::foo(); <span>//</span><span> 调用全局空间中的类 "B" 的 "foo" 方法 // 如果类 "B" 未找到,则尝试自动装载类 "B" // 当前命名空间中的静态方法或函数</span> <span> A\B</span>::foo(); <span>//</span><span> 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法 // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B"</span> <span> \A\B</span>::foo(); <span>//</span><span> 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法 // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B"</span> ?>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c
