在面向对象编程中,都是以对象为单位的操作,如果我有两个不同的类,类A和类B,在同一个文件里,实例化对象,就能在这个文件同时调用类A和类B的函数
<?php #a.php class A{ public function funA() { echo 'The class:'.class.'<br/>'; } } class B{ public function funB() { echo 'The class:'.class.'<br>'; } } $a = new A(); $b = new B(); $a->funA(); //The class:A $b->funB(); //The class:B
两个类都在同一个文件,所有能运行成功,但现在大部分应用都分MVC,不同类专门处理特定的事物,比如C(Controller),只执行与事物有关的逻辑操作,这些文件很明显分属于不同目录下:
|—root
|—controller
|—controllerA.php
|—model
|—modelA.php
|—view
|—viewA.php
这时我要在modelA.php里怎么引用controllerA.php的函数呢?这就用到autoload()了。
<?php #保存在MyClass.php class MyClass { public function getNamespace() { return get_class($this); } }
现在我们在同级目录下引用这个类
<?php function autoload($name) { $file = realpath(DIR).'/'.$name.'.php'; if(file_exists($file)) { require_once($file); if(class_exists($name,false)) { return true; } return false; } return false; } $obj = new MyClass(); echo $obj->getNamespace(); //输出 MyClass;
当你引用不存在的类时,autoload就会被调用,并且你的类名会被作为参数传送过去(当你同时使用命名空间,包含命名空间部分会一起作为参数传送)。
下面我们把命名空间和自动加载类合并使用
命名空间,PHP从5.3开始支持命名空间(namespace),这个在C语言里非常常见,刚开始我不理解,直到我完整接触一个项目,需要加载在不同目录下Class时,恍然大悟。OK,下面讲一讲自己的理解吧。
用不同的命名空间区别相同的函数名,同时命名空间也可以作为引入类文件的路径。
(在WEB项目中,当在client输入一个url时,一般会有一个入口文件,在这个文件里解析你要调用的controller,以及传递的参数,然后动态的加载相应类文件,这其实就牵扯到一点路由规则,当然还有另外一种,在项目初始化之初就把所有类文件全部加载在内存中,这样,每次请求响应都不用再加载,常驻内存后响应要快点。)
<?php #首先建立一个MyClass目录,在该目录下新MyClass.php文件,代码如下。 namespace MyClass; class MyClass { public function getNamespace() { return get_class($this); } }
<?php #在跟MyClass目录同级的目录下,新建一个文件,内容如下 function autoload($name) { $class_path = str_replace('\\',DIRECTORY_SEPARATOR,$name); //把表示命名空间的分割符号,转换成表示目录结构的斜线 $file = realpath(DIR).'/'.$class_path.'.php'; if(file_exists($file)) { require_once($file); //引入文件 if(class_exists($name,false)) //带有命名空间的类名 { return true; } return false; } return false; } echo MyClass\MyClass::getNamespace(); //输出: MyClass\MyClass;
这样非常容易避免了,当一个项目非常大时,不停的require文件。
让我们再思考,有没有更工程化的解决方案?当然有,我们可以建立自己的 Autoload 类,在这个类里面自动加载不同的类(可以包含命名空间),需要引用其他类的文件,只需要显示写入这个 Autoload 类即可。
以上がオートロードクラス __autoload() の使用法の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

依存関係の指示(di)inphpenhancesscodeflexibility andtestability bydecouplingdepensitycreation fromusage.toemplementdiefectivilly:1)sudiconticainersichyloiavoidovedovedineriering.2)回避装置の回避装置loadbylimitingdencedentotheeorfour.3)adhe

toimproveyourphpwebsite'sperformance、usethesestrategies:1)codecaching withop cachetospeedupscriptscriptintertention.2)最適化策を選択することを最適化してください

はい、itispossibletosendmassemailswithphp.1)uselibrarieslikephpmailerorsforfienceemailsending.2)vetseemailstoavoidspamflags.3)emorizeemailsusingdynamicconttoimbroveengagemention.

依存関係の指示(di)inphpisadesignpatterntativevevesion ofコントロール(IOC)は、依存性を依存していることによって、微分化された誘惑を依存させ、微分、テスト可能性、および柔軟性を高めることができます

PHPを使用して電子メールを送信する最良の方法は次のとおりです。1。PHPのMail()関数を基本送信に使用します。 2。phpmailerライブラリを使用して、より複雑なHTMLメールを送信します。 3. SendGridなどのトランザクションメールサービスを使用して、信頼性と分析機能を改善します。これらの方法を使用すると、電子メールが受信トレイに届くだけでなく、受信者を引き付けることもできます。

PHP多次元アレイの要素の総数を計算することは、再帰的または反復的な方法を使用して行うことができます。 1.再帰的な方法は、アレイを通過し、ネストされた配列を再帰的に処理することによりカウントされます。 2。反復法は、スタックを使用して再帰をシミュレートして深さの問題を回避します。 3. array_walk_recursive関数も実装できますが、手動でカウントする必要があります。

PHPでは、ループの特性は、ループ本体が少なくとも1回実行されることを確認し、条件に基づいてループを続行するかどうかを決定することです。 1)条件付きチェックの前にループ本体を実行します。これは、ユーザー入力検証やメニューシステムなど、操作を少なくとも1回実行する必要があるシナリオに適しています。 2)ただし、do-whileループの構文は、初心者間の混乱を引き起こす可能性があり、不要なパフォーマンスオーバーヘッドを追加する可能性があります。

PHPの効率的なハッシュ文字列は、次の方法を使用できます。1。MD5関数を使用して高速ハッシュを使用しますが、パスワードストレージには適していません。 2。SHA256関数を使用して、セキュリティを改善します。 3. password_hash関数を使用してパスワードを処理して、最高のセキュリティと利便性を提供します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版
中国語版、とても使いやすい

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