Heim php教程 php手册 PHP代码分离

PHP代码分离

Jun 06, 2016 pm 07:36 PM
php 代码 分离 思路

所谓的 代码 分离 其实只是一种思路,既然是一种思路 那就意味着他是有需求的 没有需求就没有解决方案 没有方案就不存在思路。 在这之前,我们制作 PHP 程序页面的时候。都是 HTML 和 PHP 混合写在一起的。 这产生了什么样的问题,主要有两个: 1、 代码 太长

所谓的代码分离 其实只是一种思路,既然是一种思路 那就意味着他是有需求的 没有需求就没有解决方案 没有方案就不存在思路。

在这之前,我们制作 PHP 程序页面的时候。都是 HTML 和 PHP 混合写在一起的。

这产生了什么样的问题,主要有两个:

1、代码太长不便阅读,一个流程往往跨了N行代码,可能之后还需要几个括号结束都不记得了。。

2、不便于编辑网页,我们制作网页的时候。往往是先用 DW 等工具,设计好页面之后,再往里面添加 PHP 代码。但是很多时候,有些 HTML 需要 PHP 输出。这个时候,这些代码就不便于返回 DW 编辑样式。

简单来说就是 修改页面样式困难,所以我们的代码只有php多好 这样代码的行数就明显减少 html代码在另一边, 也能方面的调回dw等工具重新编辑。

 比如说:表单页和 PHP 页是分开的。为什么不写在一起呢。

如果写在一起的话。可能会存在一个问题。比如网页一打开。就会马上执行写入操作。而这个时候表单还没有提交。提交以后。也不需要再显示表单页了。于是就有了判断。

 if($_POST) {
   //处理提交后的数据
} else {
   //显示表单

用 if 把程序分成两个流程。

 在显示表单的时候。中间得插上一段长长的 HTML 代码。 写好的代码,重新读起来相当不便。

 有时候自己都找不到后面的 } 写在哪一行了。 这个时候。代码分离的方案。就有用武之地了。

 我们先来说一下。HTML 和 PHP 分别的工作内容。要了解它们的工作本质。才能准确的分离它们。 我们知道,最终输出到网页上的,是 PHP 执行之后的结果。而且是输出的结果。  这个逻辑。意味着一个事情:所有 HTML 代码都是用于输出的。 那 PHP 代码做什么的。计算,流程控制。 于是呢,就有程序员开始这么想。把 HTML 分离开来。需要显示它的时候。再用 include 函数把 HTML 包含进来。 

 像刚才的表单提交。我们可以这样写

if($_POST) {

} else {
    include("post.htm");

 

 PHP 代码和 HTML 分开了。 在需要的时候,再显示 HTML  这就是最原始的代码分离方案。 这里产生一个问题,像我们制作文章页面的时候。需要在 HTML 里大量输出变量 

 光是这样 include  一个 HTML 文件进来是做不到的。 这里,就得利用一下“包含”的特性了。 包含。是指把另一个文件的代码,调到当前位置来执行。 如果这个文件里面就有 echo $a; 这样的写法。而当前的程序中。 $a 是有赋值的。 那么。调进来以后。$a  的值会被输出。 于是,我们的 HTML 页,我可以存为 PHP 页。只在需要的地方,echo 变量。 

 就有这么一种写法





 为了方便 HTML 代码能重新回到 DW 里编辑。在这里的 echo 不含任何代码。用很小的 PHP 代码块。嵌入 HTML 码中。 这些小的代码块。基本上都只有 echo,完全不干涉 HTML 代码。 这样做的同时。提出了一个新的要求。这个被包含的页面里面。定义过的变量。需要事先知道。 这个特性。到现在各种模板引擎流行的年代。依然没有改变。这个将要被包含用于输出的页面。。我们就称为:模板 ,之后,我们只要写很纯的 PHP 程序就可以了。事先准备好这些变量,并赋好值。 然后,在我们程序执行将要结束的时候,需要输出页面时。包含这个 模板文件 进来。它就能帮我们把所有变量输出了。 这就是最基本的 代码分离 实现的手法。我们来试写一个模板文件。之前说过。模板文件要能方便的在 DW 等工具里编辑,我就用 DW 制作一个模板文件。PHP代码分离

 好了,假设,这是我们期望输出的样子。 这是读以前做的留言本用的 这里需要一个循环。我填写上输出变量。

1

2

3

4

5

<strong>代码</strong>如下:

 

 

 

<title>测试用模板</title>

Nach dem Login kopieren
ID 姓名 联系方式

 这种编写方使得这个PHP 程序放到 DW 等可视化工具里编辑时。还能完整的看到原来的网页效果。 我们只要记住。这个模板需要一个名为 $list 的数组变量就可以了。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?PHP $link = mysql_connect("localhost", "root", "qsdmt0409");

mysql_select_db("test");

mysql_query("set names gbk");

 

$sql = "select * from `gbook`";

$rs = mysql_query($sql);

 

$list = array();

while($line = mysql_fetch_assoc($rs)) {

    $list[] = $line;

}

 

include("tpl.php");

 

?>

Nach dem Login kopieren

  这是使用模板的PHP程序。中间那里。读取数据的时候。我并没有使用输出。而是赋值到一个名为 $list 的数组变量里。读取结束后,使用 include 包含这个模板文件。 显示效果如下PHP代码分离

 如果需要显示不同的网页样式。只要加载不同的模板文件就可以了。 代码分离的特点。就是要求:需要知道模板上都有什么样的变量名。它要一个什么样的数据结构。

 模板使得我们的 PHP 代码精简了不少。可以集中精力去思考 PHP 应该做的事情。 也让写好的 PHP 程序更易读易改。 但是,这里还存在一些小问题。 我们的 PHP 程序往往代码很长。里面用过的变量有时候有上百个之多。 可能会出现一种情况。就是这个变量。在之后被修改过了。自己却没发现。 这种情况。叫“变量名污染”。有些变量。我们只是希望在 PHP 中使用,并不希望它显示到模板里。但有些变量。可能由于流程比较复杂。不小心重新赋值了。 

 那么,我们可以封装这样的一个自定义函数。

function tpl( $name ) {
    include($name . ".php");

 这样一来,的确内外变量就不冲突了。新的问题又来了,那我们希望赋值的变量如何送进去? 几种可实现的方法。第一个是通过某种全局变量。送进去。 预定义变量,都是全局变量。它们都可以穿透自定义函数。但是大多数预定义变量都有自己的用途。 $GLOBALS 这个预定义变量则没有问题。但是,预定义变量都是数组。模板中需要的是一个准确的变量。 可以使用 foreach 来遍历数组读取索引和值,取索引重新组成一个新的变量,赋值为它当前值。foreach($GLOBALS as $k=>$v) $$k=$v;

 function tpl( $name ) {
    foreach($GLOBALS as $k=>$v) $$k=$v;
    include($name . ".php");

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?PHP function tpl( $name ) {

    foreach($GLOBALS as $k=>$v) $$k=$v;

    include($name . ".php");

}

 

$link = mysql_connect("localhost", "root", "qsdmt0409");

mysql_select_db("test");

mysql_query("set names gbk");

 

$sql = "select * from `gbook`";

$rs = mysql_query($sql);

 

$list = array();

while($line = mysql_fetch_assoc($rs)) {

    $list[] = $line;

}

$GLOBALS['list'] = $list;

Nach dem Login kopieren

1

2

tpl('tpl');

?>

Nach dem Login kopieren

 $GLOBALS['list'] = $list;

在这里,我们把我们准备好的数据。存放到 全局变量 中。 然后,在自定义函数里,通过这个全局变量,还原出变量。

但是,考虑到预定义变量。常常用于其他用途。这里还是放弃了这种做法。

 我们可以使用自定义变量。然后通过自定义函数的参数传进去。

 function tpl( $name, $data ) {
    foreach($data as $k=>$v) $$k=$v;
    include($name . ".php");

 $list = array();
while($line = mysql_fetch_assoc($rs)) {
    $list[] = $line;
}
$data = array();
$data['list'] = $list;

tpl('tpl', $data); 

 还有另一种方法。就是把变量放到另一个自定义函数中保存起来。需要的时候再读出来。 

静态变量可以做到这一点。 

1

2

3

4

5

function set_var($name = NULL, $value = NULL) {

    static $data = array();

    if(is_null($name)) return $data;

    $data[$name] = $value;

}

Nach dem Login kopieren

 我定义一个这样的函数。里面声明 $data 是一个静态变量。 静态变量,使用它的值不会消失。而会被一直保留到 PHP 运行结束。 重复运行这个函数。里面的静态变量值,不会被重新赋值。 如果变量名未指定。则返回数组。。否则 给数组新定义一个索引。并赋值为指定的值。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<!--?PHP function set_var($name = NULL, $value = NULL) {

    static $data = array();

    if(is_null($name)) return $data;

    $data[$name] = $value;

}

 

function tpl( $name) {

    $data = set_var();

    foreach($data as $k=-->$v) $$k=$v;

    include($name . ".php");

}

 

$link = mysql_connect("localhost", "root", "qsdmt0409");

mysql_select_db("test");

mysql_query("set names gbk");

 

$sql = "select * from `gbook`";

$rs = mysql_query($sql);

 

$list = array();

while($line = mysql_fetch_assoc($rs)) {

    $list[] = $line;

}

set_var('list', $list);

 

tpl('tpl');

?>

Nach dem Login kopieren

  

 现在代码如上。 使用 set_var 函数。把要显示的变量,记忆到另一个世界中。然后。在读取模板之前。把变量重新读回来。并恢复成普通的变量。当然。之前用一个变量来记忆也是一个办法。但是始终是占用了程序的变量。

 我们可以试试看。多赋值几个。 

 



 

 set_var('title', '这里是大标题');
tpl('tpl'); 

为了省事,我把它们封装成一个类。

1

2

3

4

5

6

7

8

9

10

11

12

13

class tpl {

    public function set_var($name = NULL, $value = NULL) {

        static $data = array();

        if(is_null($name)) return $data;

        $data[$name] = $value;

    }

     

    public function p( $name) {

        $data = $this->set_var();

        foreach($data as $k=>$v) $$k=$v;

        include($name . ".php");

    }

}

Nach dem Login kopieren

  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$tpl = new tpl();

 

$link = mysql_connect("localhost", "root", "qsdmt0409");

mysql_select_db("test");

mysql_query("set names gbk");

 

$sql = "select * from `gbook`";

$rs = mysql_query($sql);

 

$list = array();

while($line = mysql_fetch_assoc($rs)) {

    $list[] = $line;

}

 

$tpl->set_var('list', $list);

$tpl->set_var('title', '这里是大标题');

 

$tpl->p('tpl');

Nach dem Login kopieren

  现在,使用模板成了这样子。准备好要赋值的数据。赋值到指定的标记上。 只在最后  方法时,才调用模板并显示。现在看看,如果代码写成这样。给我们来带了多少好处。

 代码中不再含有 HTML 码,清晰简单了许多。 我们可以专心写我们的 PHP。只要准备好要输出的变量就可以了。 set_var 会帮我们把这些值。复制到另一个世界中保存的。 

 这个变量名你之后用来做别的也没关系了。不担心变量名污染。 模板文件,可以轻松的调回可视化编辑器重新回炉加工。 如果你的数据,全部都是从数据库等方面读出来的。 这样会使得我们的 PHP 代码中,不再夹有中文或特殊字符。清一色的 ASCII 码。 这使得 PHP 程序不用再意它本身是什么编码构成,这使得 PHP 程序不用再意它本身是什么编码构成,之前编写代码,之所以在意文件编码。是因为我们的代码中夹着大量的要输出的内容。 这些要输出的内容,是有编码的。 当你的代码中,只有 PHP 的时候,不用再意 PHP 程序本身的编码。使用模板。因为是执行到最后才一次输出。使得我们在编写过程中。不再考虑一些特殊函数。。使用前不能有输出的规则。例如 setcookie header  ,使用模板的程序。整页都没有一个输出。。只有最后那里才有。 而且负责输出的代码。只有一行。。目前使用得最多的模板类。要属 smarty 模板类了。 

PHP代码分离

PHP代码分离

PHP代码分离

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles