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

目次
パート 1. 言語機能
機能
名前空間
役立つヒント
インターフェイスへのコード
トレイト
Closures
Zend Opcache
Built-in HTTP server
Part 2. Good Pratices
Standards
PHP-FIG
PSR
PSR-1 Basic Coding standard
PSR-2 Strict Code Style
PSR-3 Logger Interface
PSR-4 Autoloaders
Components
Composer
セマンティック バージョニング
PHP コンポーネントを作成する

最新の PHP 読書メモ 1

Jun 13, 2016 pm 12:29 PM
php psr the

現(xiàn)代PHP読書メモ1

PHPについて誤解が多いですが、実は現(xiàn)代PHPは開発効率、実行効率が非常に高いプログラミング言語です。最新の PHP のさまざまな機能については、<modern php></modern>著者が以前に書いた 正しい方法での PHP、中國語訳: 正しい方法での PHP を參照してください。同時に、著者は人気のある PHP フレームワークである Slim の開発者でもあります。したがって、この本は、OOP の概念をいくつか理解するだけでよく、PHP 開発について知る必要はありません。

  • パート 1 言語機能
    • 機能
      • 名前空間
        • 役立つヒント
      • インターフェイスへのコード
      • トレイト
      • ジェネレーター
      • クロージャ
      • Zend Opcache
      • 組み込み HTTP サーバー
  • パート 2 良い実踐法
    • 標準
      • PHP-FIG
      • PSR
        • PSR- 1 基本コーディング標準
        • PSR-2 厳密なコード スタイル
        • PSR-3 ロガー インターフェイス
        • PSR-4 オートローダー
    • コンポーネント
      • コンポーネント
      • コンポーザー
      • セマンティック バージョニング
      • PHP コンポーネントの作成

パート 1. 言語機能

機能

名前空間

PHP 名前空間は、合計名前空間を區(qū)切るために "" 文字を使用します。オペレーティング システムの物理ファイル システムとは異なり、PHP 名前空間は抽象概念であり、ファイル ディレクトリと 1 対 1 に対応する必要はありません。ほとんどの PHP コンポーネントは、PSR-4 オートローダー標準に従って、サブ名前空間とファイル ディレクトリ間のマッピングを編成します。

技術的に言えば、名前空間は単なる PHP 言語のシンボルであり、PHP インタープリターはこのシンボルをクラス/インターフェイス/関數(shù)/定數(shù)のセットの接頭辭として使用するだけです。

Namespaces are important because they let us create sandboxed code that works alongside other developer's code. This is the cornerstone concept of the modern PHP component ecosystem.

役立つヒント

1. 複數(shù)のインポート
悪い:

<code class="php?linenums hljs tex"><?phpuse Symfony<span class="hljs-command">\Component</span><span class="hljs-command">\HttpFoundation</span><span class="hljs-command">\Request</span>,        Symfony<span class="hljs-command">\Component</span><span class="hljs-command">\HttpFoundation</span><span class="hljs-command">\Response</span>,        Symfony<span class="hljs-command">\Component</span><span class="hljs-command">\HttpFoundation</span><span class="hljs-command">\Cookie</span>;</code>

良い:

<code class="php?linenums hljs tex"><?phpuse Symfony<span class="hljs-command">\Component</span><span class="hljs-command">\HttpFoundation</span><span class="hljs-command">\Request</span>; use Symfony<span class="hljs-command">\Component</span><span class="hljs-command">\HttpFoundation</span><span class="hljs-command">\Response</span>; use Symfony<span class="hljs-command">\Component</span><span class="hljs-command">\HttpFoundation</span><span class="hljs-command">\Cookie</span>;</code>

2. ファイルごとに 1 つのクラス

3. グローバル名前空間
名前空間のないクラス/インターフェイスを參照する場合/function/constant、PHP はまず、この class/interface/function/constant が現(xiàn)在の名前空間にあると想定します。 PHP は、現(xiàn)在の名前空間で見つからない場合にのみ解決を開始します。名前空間を持たないコードの場合、PHP はそのコードがグローバル名前空間に存在するとみなします。

PSR-4

インターフェイスへのコード

An interface is a contract between tow PHP objects that lets one object depend not on what another object is but, instead, on what another can do.

トレイト

A trait is a partial class implementation(i.e., constants, properties, and methods) that can be mixed into one or more existing PHP classes. Traits work double duty: they say what a class can do (like an interface), and they provide a modular implementation (like class).

iOS の開発と比較して、私のお気に入りの機能の 1 つは、PHP の特性はカテゴリに似ていますが、それでも異なります。
1. OC は特定のクラスでのみ実行できます。 、PHP のトレイトは無関係なクラスにコード ユニットを挿入できます。同時に、OC のカテゴリは屬性の拡張を直接実裝できませんが、PHP のトレイトは定數(shù)、屬性、およびメソッドを?qū)g裝できます。 3. PHP トレイトと OC カテゴリは根本的に目的が異なります。OC は既存のクラスを直接拡張するものであり、実裝クラスを継承する必要はありません。 PHP の特性は、クラス定義で
を使用して指定する必要があります。
use は、

ファイルごとの特性

のクラスおよびインターフェースの定義と同じです。 ジェネレーター

Generators are easy to create because they are just PHP functions that use the yield keyword one or more times. Unlike regular PHP functions, generators never return a value. They only yield values. この概念は、Swift を含む Python にこの機能があり、大量のデータを反復して動的にデータを取得するために使用できます。メモリの無駄を避けるために、一度にすべてを生成するのではなく。

各反復中に、PHP はジェネレーター インスタンスに次の反復値を計算して提供するように要求します。このプロセスでは、ジェネレーターが降伏値に達すると、ジェネレーターは內(nèi)部狀態(tài)の実行を一時停止します。ジェネレーターが次の反復値を提供するように要求された場合にのみ、ジェネレーターは內(nèi)部狀態(tài)の実行を継続します。ジェネレーターはこのように一時停止と再開を繰り返し、ジェネレーターの関數(shù)定義の最後に到達するか空になるまで実行を終了しません。

Closures

A closure is a function that encapsulates its surrounding state at the time it is created. The encapsulated state exists inside the closure even when the closure lives after it original environment ceases to exist.

這里的閉包是指Closure和Anonymous functions。上面是作者對于閉包的解釋,感覺非常準確,比我看到的大多數(shù)解釋都要簡單清晰。閉包在日常業(yè)務開發(fā)中非常有用,可以非常方便替換我們經(jīng)常需要用到的delegate設計模式,不需要再去定義一個interface,然后再實現(xiàn)這個interface,再把對應的對象指針傳遞過去。而是通過Closure,只需要簡簡單單傳遞一段代碼即可,這個極大簡化了日常業(yè)務開發(fā)。所以目前iOS開發(fā)中,大家通常都會使用block來代替delegate設計模式。

PHP Closure or Anonymous function 跟PHP function的定義語法是一樣的,但是實際上 Closure 的背后是Closure class的實例,所以Closure被認為是first-class value types。

Attach State : PHP的Closure不會automatically enclose application state,不像JavaScript/OC那樣會capture作用域之外的變量。而是,you must manually attach state to a PHP closure with the closure object's bindTo() method or the use keyword.

需要注意的是,PHP closures是objects。而我們之所以能讓一個closure 實例變量進行調(diào)用,是因為這個對象實現(xiàn) __invoke() magic method,當我們在closure實例變量后面跟著一個 () 的時候,closure實例變量就會尋找并且調(diào)用__invoke() 方法,例如 $closure("Jason")。

同樣,由于PHP closure是objects。所以,在closure內(nèi)部我們也可以通過 $this 訪問closure的各種內(nèi)部狀態(tài),但是這個狀態(tài)是非常boring。同時,closure的bindTo()方法可以有一些非常有趣的特殊用法,This method lets us bind a Closure object's internal state to a different object. The bindTo() method accepts an important second argument that specifies the PHP class of the object to which the closure is bound.This lets the closure access protected and private member variables of the object to which it is bound.。這個用法有點類似JavaScript的bind方法,可以改變Closure object的 $this 指針指向。

bindTo()這個有趣的用法,經(jīng)常各種PHP框架的路由所采用,例如:

<code class="php?linenums hljs xml"><span class="php"><span class="hljs-preprocessor"><?</span> php<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span>{</span>    <span class="hljs-keyword">protected</span> <span class="hljs-variable">$routes</span> = <span class="hljs-keyword">array</span>();    <span class="hljs-keyword">protected</span> <span class="hljs-variable">$responseStatus</span> = <span class="hljs-string">'200 OK'</span>;    <span class="hljs-keyword">protected</span> <span class="hljs-variable">$responseContentType</span> =<span class="hljs-string">'text/html'</span>;    <span class="hljs-keyword">protected</span> <span class="hljs-variable">$responseBody</span> = <span class="hljs-string">'Hello world'</span>;    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">addRoute</span><span class="hljs-params">(<span class="hljs-variable">$routePath</span>, <span class="hljs-variable">$routeCallback</span>)</span>    {</span>        <span class="hljs-comment">// 將Closure bind到App類上</span>        <span class="hljs-variable">$this</span>->routes[<span class="hljs-variable">$routePath</span>] = <span class="hljs-variable">$routeCallback</span>->bindTo(<span class="hljs-variable">$this</span>, <span class="hljs-keyword">__CLASS__</span>);    }    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">dispatch</span><span class="hljs-params">(<span class="hljs-variable">$currentPath</span>)</span>    {</span>        <span class="hljs-keyword">foreach</span> (<span class="hljs-variable">$this</span>->routes <span class="hljs-keyword">as</span> <span class="hljs-variable">$routePath</span> => <span class="hljs-variable">$callback</span>) {            <span class="hljs-keyword">if</span> (<span class="hljs-variable">$routePath</span> === <span class="hljs-variable">$currentPath</span>) {                <span class="hljs-variable">$callback</span>();            }        }        <span class="hljs-comment">// 這里返回的state是在callback內(nèi)修改過的</span>        header(<span class="hljs-string">'HTTP/1.1 '</span>.<span class="hljs-variable">$this</span>.responseStatus);        header(<span class="hljs-string">'Content-type: '</span>.<span class="hljs-variable">$this</span>.responseContentType);        header(<span class="hljs-string">'Content-length: '</span>.mb_strlen(<span class="hljs-variable">$this</span>->responseBody));        <span class="hljs-keyword">echo</span> <span class="hljs-variable">$this</span>->responseBody;    }}<span class="hljs-comment">// 添加注冊一個路由</span><span class="hljs-preprocessor"><?php</span><span class="hljs-variable">$app</span> = <span class="hljs-keyword">new</span> App();<span class="hljs-variable">$app</span>->addRoute(<span class="hljs-string">'/users/josh'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>    <span class="hljs-comment">// 因為這個route是bindTo到App class上的,所以這里直接訪問$this修改 App 的內(nèi)部state</span>    <span class="hljs-variable">$this</span>->responseContentType = <span class="hljs-string">'application/json;charset=utf8'</span>;    <span class="hljs-variable">$this</span>->responseBody = <span class="hljs-string">'{"name": "Josh"}'</span>;});<span class="hljs-variable">$app</span>->dispatch(<span class="hljs-string">'/users/josh'</span>);</span></code>

Zend Opcache

從PHP 5.5.0開始,PHP引入了內(nèi)置的bytecode cache支持,叫做 Zend OPcache。PHP解釋器在執(zhí)行PHP腳本的時候,會首先把PHP代碼編譯為Zend Opcodes (machine-code instructions),然后才會執(zhí)行bytecode。在所有請求中,PHP解釋器都需要這樣處理所有的PHP文件,read/parse/compiles,然而我們可以通過把PHP文件預編為PHP bytecode來省略這個開銷,這就是Zend OPcache

Zend OPcache的使用非常簡單,在我們配置之后,它就會在內(nèi)存中自動緩存precompiled PHP bytecode,在可用的情況就會直接執(zhí)行這個PHP bytecode,而不需要再去編譯PHP代碼。

具體配置去google吧,有一點需要注意的是,如果同時配置了 Xdebug的話,在php.ini文件中,需要在Xdebug之前加載Zend OPcache extension擴展。

Built-in HTTP server

PHP從5.4.0引入了內(nèi)置的HTTP server,所以我們在不配置Apache或者nginx的情況下就直接預覽PHP程序。

<br>Remember, the PHP built-in server is a web server. It speaks HTTP, and it can serve static assets in addition to PHP files. It's a great way to write and preview HTML locally without installing MAMP, WAMP, or a heavyweight web server. <br>

要使用內(nèi)置的HTTP server非常簡單,在工程的根目錄下,執(zhí)行下面的命令即可:

<code class="bash hljs ">php -S localhost:<span class="hljs-number">4000</span></code>

如果要讓本地網(wǎng)絡的其他設備訪問PHP web server,我們可以這么啟動:

<code class="bash hljs ">php -S <span class="hljs-number">0.0</span>.<span class="hljs-number">0.0</span>:<span class="hljs-number">4000</span></code>

如果我們希望通過 PHP INI 配置文件去做一些特殊配置,可以通過下面命令來啟動:

<code class="bash hljs ">php -S localhost:<span class="hljs-number">8000</span> -c app/config/php.ini</code>

我們也可以通過Router Scripts來實現(xiàn)一些特殊的路由需求,可以通過下面的命令啟動:

<code class="bash hljs ">php -S localhost:<span class="hljs-number">8000</span> router.php</code>

在PHP代碼中,我們可以通過php_sapi_name()來判斷:

<code class="php?linenums hljs xml"><span class="php"><span class="hljs-preprocessor"><?php</span><span class="hljs-keyword">if</span> (php_sapi_name() === <span class="hljs-string">'cli-server'</span>) {        <span class="hljs-comment">// PHP web server</span>} <span class="hljs-keyword">else</span> {        <span class="hljs-comment">// Other web server</span>}</span></code>

Part 2. Good Pratices

Standards

PHP-FIG

PHP-FIG (PHP Framework Interop Group): The PHP-FIG is a group of PHP framework representatives who, according to the PHP-FIG website, "talk about the commonalities between our projects and find ways we can work together."

PHP-FIG は、さまざまな PHP フレームワーク開発者で構(gòu)成されるオープンな組織であり、彼らが提案する推奨事項は標準や要件ではなく、ベスト プラクティスの提案を集めたものに近いものです。ただし、Laravel や Symfony など、現(xiàn)在人気のある PHP フレームワークのほとんどはこれらの推奨事項に準拠しているため、多くの PHP ツールや多種多様なオープンソース ライブラリを使用したい場合は、これが現(xiàn)代の PHP の事実上の標準のように感じられます。この標準を採用するのが最善です。

The PHP-FIG's mission is framework interoperability. And framework interoperability means working together via interfaces, autoloading, and style.
以下で説明するように、PHP-FIG の使命は、異なるフレームワーク間の相互運用性であり、異なるフレームワークを簡単に組み合わせて一緒に使用できるようにします。相互運用性は現(xiàn)在、主にインターフェイス、自動読み込み、スタイル:

  • インターフェイス: Interfaces enable PHP developers to build, share, and use specialized components instead of monolithic frameworks の 3 つの側(cè)面を通じて実現(xiàn)されています。インターフェイスに基づいて、たとえば Laravel の HTTP のコンポーネントを直接使用できます。処理部分は、Symfony 全體を Laravel に統(tǒng)合することなく、Symfony Frameworks の symfony/httpfoundation コンポーネントを直接使用します。
  • オートローディング: PHP frameworks work together via autoloading. Autoloading is the process by which a PHP class is automatically located and loaded on-demand by the PHP interpreter during runtime、オートローディング標準が登場する前は、PHP コンポーネントとフレームワークは __autoload()或spl_autoload_register() メソッドに基づいて獨自の獨自のオートローダーを?qū)g裝していました。そのため、サードパーティのコンポーネントを使用したい場合は、まず、オートローダーの実裝を調(diào)査する必要があります。
  • スタイル: PHP frameworks work together via code style.

PSR

PSR は PHP standards recommendation の略で、PSR- などの PHP-FIG によって提案される推奨文書です。 1、PSR-2など各 PHP-FIG 推奨事項は、ほとんどの PHP フレームワークの開発で一般的に遭遇する問題を解決するために提案されています。

現(xiàn)在、PHP-FIG の公式 Web サイト http://www.php-fig.org/psr/ で、現(xiàn)在採用されているすべての推奨事項を確認できます。
最新の PHP 読書メモ 1

特定の PSR 文書の內(nèi)容については、公式 Web サイト PSR-1/2/3/4 を參照してください。

文檔 原文 中文翻譯
PSR-1 Basic Coding Standard https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md https://segmentfault.com/a/1190000002521577
PSR-2 Coding Style Guide https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md https://segmentfault.com/a/1190000002521620
PSR-3 Logger Interface https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md https://segmentfault.com/a/1190000002521644
PSR-4 AutoLoading Standard https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md https://segmentfault.com/a/1190000002521658
いくつかの文書には中國語の翻訳が付いています。

PSR-1 Basic Coding standard

PHP tags : 使用

PSR-2 Strict Code Style

Implement PSR-1 : 要求必須采用PSR-1
Indentation: 采用4個空格字符作為縮進
Files and lines : 必須使用Unix linefeed(LF)作為結(jié)尾;文件最后必須以空行作為結(jié)束;不能使用尾部 ?> PHP tag;每行盡量不要超過80個字符,最多不能超過120個字符;每行結(jié)尾不能包含空格;
Keywords: 所有的PHP關鍵字都必須小寫
Namespaces: 每個namespace聲明后面都必須跟著一個空行;使用use來import or alias namespaces的時候,必須在use聲明后面跟一個空行;
Classes: 定義類時,開始的大括號(opening bracket)必須新起一行,結(jié)束的大括號(closing bracket)必須在類體定義后面新起一行;extents/implements關鍵字必須跟在類名定義的后面;例如:

<code class="php?linenums hljs xml"><span class="php"><span class="hljs-preprocessor"><?php</span><span class="hljs-keyword">namespace</span> <span class="hljs-title">My</span>\<span class="hljs-title">App</span>;<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Administrator</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">User</span> {</span>    <span class="hljs-comment">// Class definition body</span>}</span></code>

Methods: 方法定義的大括號規(guī)則與類定義類似,opening brackets和closing brackets都必須新起一行。
Visibility: 對類中定義的全部property和method都必須聲明可見性(visibility),可見性是public, protected, private其中的一個;abstract / final 必須寫在visibility之前;static必須寫在visibility之后;
Control structures : 所有的control structure keyword (if/elseif/else/switch/case/while/do while/for/foreach/try/catch)的后面都必須一個空字符;大括號的規(guī)則與class定義不同,opening brackets跟control structure keyword必須在同一行,而closing bracket必須另新一行;

我們可以通過IDE的格式化工具來讓代碼格式化,實現(xiàn)PSR-1和PSR-2的code style。我經(jīng)常使用的工具PHPStorm就可以設置。還有一些其他工具,比如 PHP-CS-Fixer 或 PHP Code Sniffer

PSR-3 Logger Interface

PSR-3 is an interface, and it prescribes methods that can be implemented by PHP logger components.

PSR-4 Autoloaders

An autoloader is a strategy for finding a PHP class, interface, or trait and loading it into the PHP interpreter on-demand at runtime. PHP components and frameworks that support the PSR-4 autoloader standard can be located by and loaded into the PHP interpreter with only one autoloader.

關于PSR-4,看官方文檔之后感覺理解很困惑,本書的作者的解釋就非常簡潔:
The essence of PSR-4 is mapping a top-level namespaces prefix to a specific filesystem directory.,簡單來說,就是設定了一個namespaces前綴和某個特定的文件目錄之間的映射關系,然后在這個namespace前綴之下如果還有更多的sub namespace,這些sub namespaces就會跟這個特定的目錄下面的子目錄一一映射起來。例如,\Oreilly\ModernPHP namespace與 src/ 物理路徑一一映射,那么\Oreilly\ModernPHP\Chapter1對應的文件夾就是src/Chapter1,而\Oreilly\ModernPHP\Chapter1\Example類對應的文件路徑就是src/Chapter1/Example.php文件。

PSR-4 lets you map a namespace prefix to a filesystem directory. The namespace prefix can be one top-level namespace. The namespace prefix can also be a top-level namespace and any number of subnamespaces. It's quite flexible.

Components

Components

Modern PHP is less about monolithic framework and more about composing solutions from specialized and interoperable components.

What Are Components?A component is a bundle of code that helps solve a specific problem in your PHP application.

框架與Components:如果我們正在創(chuàng)建一個小項目,可以直接使用一些PHP Components集合來解決問題;如果我們正在進行一個多人合作開發(fā)的大項目,我們可以通過使用一個Framework;但這都不是絕對的,應該根據(jù)具體問題來解決。

Packagist:跟其他語言的包管理機制一樣,例如Maven,也有一個網(wǎng)站 https://packagist.org/ 讓我們搜索我們需要的PHP Components的相關信息??偹苤脑颍琍ackagist在國內(nèi)很不穩(wěn)定,可以使用國內(nèi)的全量鏡像來代替,http://www.phpcomposer.com/ 。

Composer

Composer is a dependency manager for PHP components taht runs on the command line は、他の現(xiàn)代言語と同様に、PHP は、iOS の Cocoapods、Android の Maven/gradle、フロントエンドの npm、および Ruby gem と同様に、依存関係管理に Composer を使用します。これらのツールを使用すると、サードパーティ ライブラリの管理コストを大幅に簡素化できます。そのため、必要なコンポーネントを Packagist で見つけたら、Composer を通じてこのライブラリを使用できます。

Composer を使用してサードパーティ コンポーネントを追加すると、Composer は必要な PHP コンポーネントのダウンロードを自動的に支援するだけでなく、PSR-4 に準拠するオートローダーの作成も自動的に支援します。

Cocoapods と同様に、Cocoapods は Podfile を使用して、依存する必要があるサードパーティ ライブラリを指定し、現(xiàn)在使用している特定のサードパーティ ライブラリのバージョン番號を保存します。したがって、さまざまなメンバー/CI/開発環(huán)境やその他の場所で使用されるサードパーティ ライブラリのバージョンの一貫性を確保するために、これら 2 つのファイルをバージョン管理に追加して管理する必要があります。 Composer の対応するファイルは、composer.json とcomposer.lock です。ここで注意する必要があるのは、composer install コマンドと Composer update コマンドの違いです。
* Composer install は、composer.lock にリストされているものよりも上位のバージョンのコンポーネントをインストールしません。
* Composer update は、更新します。コンポーネントが最新の安定バージョンに更新されると、composer.lock ファイルも最新の PHP コンポーネントのバージョン番號に更新されます。

セマンティック バージョニング

最新の PHP コンポーネントはセマンティック バージョニング スキームを使用し、小數(shù)點 (.) で區(qū)切られた 3 つの數(shù)字 (1.13.2 など) を含みます。同時に、これは他の多くの言語のオープンソース ライブラリのバージョン ルールでもあり、私は常にこれに興味を持っていましたが、ついに Modern PHP で対応する説明を目にしました。

  • メジャー リリース番號: 最初の番號はメジャー リリース番號です。PHP コンポーネントが更新され、前方互換性がなくなった場合にのみ、このバージョン番號を増やす必要があります。
  • マイナー リリース番號: 2 番目の番號は、PHP コンポーネントにマイナーな機能更新が発生し、バージョンの互換性が損なわれない場合、このバージョン番號が増加します。
  • パッチ リリース番號: 最後の數(shù)字は、バージョン互換のバグ修正が発生すると、このバージョン番號が増加します。

PHP コンポーネントを作成する

この部分は、iOS の獨自の仕様を作成するのと非常に似ています。それほど複雑な問題ではありません。參考書籍や公式ドキュメントを簡単に公開できます。 >

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? 最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? Jun 23, 2025 am 12:56 AM

postaycurrentwithpdevellyments andbest practices、follow keynewsourceslikephp.netandphpweekly、egagewithcommunitiessonforums andconferences、keeptooling and gradivallyadoptnewfeatures、andreadorcontributeTopensourceprijeprijeprijeptrijeprijeprests.

PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebdevelopmentduetoitseaseaseaseaseasease、SeamlessintegrationWithhtml、widespreadhostingsupport、andalargeecosystemincludingframeworkelavelandcmsplatformslikewordspresspressinsinsionsisionsisionsisionsisionsionsionsisionsionsionsisionsisions

PHPタイムゾーンを設定する方法は? PHPタイムゾーンを設定する方法は? Jun 25, 2025 am 01:00 AM

tosettherighttimezoneInphp、usedate_default_timezone_set()functionthestthestofyourscriptwithavalididentifiersiersuchas'america/new_york'.1.usedate_default_timezone_set()beforeanydate/timefunctions.2.2.Altertentally、confuturethephp.inifilebyset.

PHPでのユーザー入力を検証して、特定の基準を満たすことを確認するにはどうすればよいですか? PHPでのユーザー入力を検証して、特定の基準を満たすことを確認するにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

tovalidateuserinputinphp、usebuilt-validationfunctionslikefilter_var()andfilter_input()、applyRegularexpressionsforcustomformatsusususussusorphoneNumbers、checkdatatypesfornumerueSlikeageorpricepriceprice

PHP(serialize()、unserialize())のデータシリアル化とは何ですか? PHP(serialize()、unserialize())のデータシリアル化とは何ですか? Jun 22, 2025 am 01:03 AM

thephpfunctionSerialize()andunserialize()areusedtoconvertcomplexdatastructostorestorestorustorasandabackagain.1.serialize()c onvertsdatalikecarraysorobjectsraystringcontainingtainingtainingepeandStructureinformation.2。

HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

PHPコードをHTMLファイルに埋め込むことができますが、ファイルに.phpの拡張機能があることを確認して、サーバーが正しく解析できるようにします。標準タグを使用してPHPコードをラップし、HTMLのどこにでも動的コンテンツを挿入します。さらに、同じファイルでPHPとHTMLを複數(shù)回切り替えて、條件付きレンダリングなどの動的関數(shù)を?qū)g現(xiàn)できます。短いラベル、引用マークエラー、または省略されたエンドラベルによって引き起こされる問題を回避するために、サーバーの構(gòu)成と構(gòu)文の正確性に注意してください。

クリーンで保守可能なPHPコードを書くためのベストプラクティスは何ですか? クリーンで保守可能なPHPコードを書くためのベストプラクティスは何ですか? Jun 24, 2025 am 12:53 AM

清潔で維持しやすいPHPコードを書くための鍵は、標準、合理的な構(gòu)造に従って、コメント、テスト能力を適切に利用する明確な命名にあります。 1。$ userDataやcalculatetotalprice()などの明確な変數(shù)、関數(shù)、クラス名を使用します。 2。PSR-12標準統(tǒng)一コードスタイルに従ってください。 3.責任に従ってコード構(gòu)造を分割し、MVCまたはLaravelスタイルのカタログを使用して整理します。 4.麺スタイルのコードを避け、単一の責任でロジックを小さな関數(shù)に分割します。 5.キーポイントにコメントを追加し、インターフェイスドキュメントを書き込み、パラメーター、返品値、例外を明確にします。 6.テスト可能性を改善し、依存関係を採用し、グローバルな狀態(tài)と靜的な方法を減らします。これらのプラクティスは、コードの品質(zhì)、コラボレーション効率、メンテナンス後の容易さを改善します。

See all articles