検索
ホームページバックエンド開発PHPチュートリアルPHP7 を見据えて: PHP_PHP チュートリアルで変更する必要があるもの
PHP7 を見据えて: PHP_PHP チュートリアルで変更する必要があるものJul 20, 2016 am 10:57 AM
phpphp7一般的に使用意味展望変化はいほとんどほとんど知るプログラマープログラミング言語必要

プログラマーは (一般に) 優れたプログラミング言語を、自分が最もよく知っている言語、または最も頻繁に使用する言語と定義します。私は PHP プログラマー、ジョンは JavaScript プログラマー、DHH は Ruby プログラマー、Schwartz と Randall は Perl プログラマーです。 プログラマーによって問題の見方は異なりますが、総合的に最良とみなされるプログラマーは常に 1 つまたは 2 つあります。

PHP 開発者として、PHP が軽視されているのを聞くたびに心が痛みます。

Web アプリケーションの言語として PHP を使用する必要がありますが、これは悪い言語であり、その使用を必要以上に推奨したりサポートしたりすべきではありません。

おっと、私が毎日使っている言語が悪い評価をされていると聞くと、自分が選んだ言語について、自分が同意していれば他人の評価は気にしなくていい、と言う人もいるかもしれません。本当にそうすべきではないと思います。この発言が意味するのは、言語と開発者がひどいだけでなく、私たち PHP 開発者もひどいということです。

それでは、他人の大きな口を封じるために具体的に何をすべきでしょうか? PHP 言語を尊重できるようになるのでしょうか? これを実現できるいくつかの側面を分析してみましょう。

1. すべてを壊す

PHP7 はすべてを壊します。 PHP 開発者は、バージョン間の下位互換性を破壊するという法則を受け入れる必要があります。広範な下位互換性が許可されない限り、PHP7 は非常に尊敬される言語となるでしょう。

1. 特定のコア言語を作成します

すべてのライブラリ メソッドを削除し、オブジェクト セット内のコア メソッドを保持します。 外部ライブラリや拡張機能を使用せずに、基本的な入出力、文字列処理、および数学のための優れた完全な言語を作成できる PHP7 を作成できるはずです。ライブラリ外の拡張は承認される必要があります。

2. すべてをオブジェクトとして扱います

Ruby、Smalltalk、および (主に) Java からオブジェクトを取得し、それをすべてオブジェクトとして扱います。 整数はオブジェクトであり、文字列はオブジェクトであり、それぞれに操作可能なメソッドがあります。Ruby と Smalltalk がオブジェクト間でメッセージを渡す必要があり、オブジェクト メソッドを呼び出すことが最善であるという概念が PHP には必要ないと思います。

3. 一貫した名前のメソッドとクラス

PHP に関する最大の不満の 1 つは、(needle,haystack) または (haystack, neede) または some_function() または function_some() を常にチェックしなければならないことです。 someFunction() を使用するには、一貫した形式を開発する必要があります。

4. 厳密にしてください

float 文字列をメソッドに渡してみませんか? これは警告です。

5. すべてが Unicode です

PHP6 のすべての文字列が Unicode であることは良いことであり、私は PHP7 も維持されるべきだと主張します。

6. 中心的な起動ポイント

すべてのコード実行の起点となるメインクラスまたは初期化を作成します。

7. C コードをクリーンアップする

私は C の専門家ではありませんが、PHP の C コードよりも Ruby の C コードについて詳しく知っていれば、PHP と Ruby の内部を簡単に理解できます。 私は PHP に精通しているので、独自の拡張機能を作成する方が簡単です。

8. eval() を取り除く

eval() は悪です。 これを使用している場合、これは間違った考えです。これにより PHPUnit が壊れます。今後は破棄してください。

9. 演算子のオーバーロードをサポート

すべてがオブジェクトであるため、開発者はオブジェクトを操作するメソッドを習得するだけで済みます。

10. 許可されるメソッド シグネチャ

真のメソッド シグネチャを許可するため、プログラマは異なるパラメータ リストまたは戻り値の型を持つ同じ名前のメソッドを持つことができます。

<ol class="dp-c">
<li class="alt"><span><span class="keyword">class</span><span> A {   </span></span></li>
<li>
<span class="keyword">public</span><span> int </span><span class="keyword">function</span><span> doSomething(int </span><span class="vars">$a</span><span>, float </span><span class="vars">$b</span><span>) {   </span>
</li>
<li class="alt">
<span class="comment">// Same as $a->*($b->to_int());  </span><span> </span>
</li>
<li>
<span>int </span><span class="vars">$c</span><span> = </span><span class="vars">$a</span><span> * </span><span class="vars">$b</span><span>->to_int();   </span>
</li>
<li class="alt">
<span class="keyword">return</span><span> </span><span class="vars">$c</span><span>;   </span>
</li>
<li><span>}   </span></li>
<li class="alt">
<span class="keyword">public</span><span> float </span><span class="keyword">function</span><span> doSomething(int </span><span class="vars">$a</span><span>, float </span><span class="vars">$b</span><span>, float </span><span class="vars">$c</span><span>) {   </span>
</li>
<li>
<span class="comment">// Same as calling $a->*($b->*($c)); since * is a method on each object $a and $b.  </span><span> </span>
</li>
<li class="alt">
<span>float </span><span class="vars">$d</span><span> = </span><span class="vars">$a</span><span> * </span><span class="vars">$b</span><span> * </span><span class="vars">$c</span><span>;   </span>
</li>
<li>
<span class="keyword">return</span><span> </span><span class="vars">$d</span><span>;   </span>
</li>
<li class="alt"><span>}   </span></li>
<li><span>}  </span></li>
</ol>

11. PHP 仮想マシン (PVM) を構築する

私は言語設計者ではないので、これが可能かどうかは完全にはわかりませんが、PHP 仮想マシンがあればいいでしょう。 PHP バイトコードを実行でき、明示的なヒープとスタックが可能です。

12. コピーオンライト (COW) の削除

COW は非常に馴染みのない概念であり、その存在を知らないと、新しい開発者にとって問題が発生する可能性があります。

13. PHP 公式リリース仕様

W3C HTML5 仕様と同様に、PHP 仕様では、開発者が独自のバージョンの PHP を実装し、コンパイルする特定のサンプルが存在することを保証します。

2. 言語を尊重する

私たちは言語を尊重するよう努めるべきです。 私たちは、非常に強力な機能を備えた PHP7 を開発する開発者を募集するために最善を尽くすべきです。 私たちは巨大なコードを安全かつ読みやすくし、新しい開発者に正しい方法でプログラミングすることを教える必要があります。

Ruby の狂気については知りませんが、Ruby 言語を尊敬しています。 私は Ruby on Rails の威力を認めていますし、Ruby on Rails は非常に優れたフレームワークだと考えていますが、私の好みではありません。評判の良い開発者からの認知や尊敬を得ることができれば、PHP はさらに進化するでしょう。

3. 開発者を尊重する

上記の理解から、私たちは非常に尊敬される PHP 開発コアチームを必要としています。 彼らはコードをリリースし、講演し、物事の「正しい方法」を人々に示し、このチームはすぐに多くの開発者の尊敬を得るでしょう。

結論

PHP の将来に興奮しています。 私のアイデアが実現されるかどうかは非常に疑わしいですが、社会全体に役立つと心から信じています。 世界第 2 位の Web サイトが、PHP による素晴らしいコミュニティの構築を支援していると発表したとき、私はとても興奮しました。 PHP は消えることはなく、改良に努め続ける限り、いつかは PHP が開発者から一般的に尊敬される言語になるでしょう。

最後に、私は言語デザイナーではありません。 私のアイデアはまったくナンセンスだと思われるかもしれません。 私のどこかが間違っている場合は、丁寧にお知らせください。喜んでお話しします。 PHP が高く評価され、強力で高速かつ効率的な言語になるよう、協力していきましょう。コンパイルにエラーがある場合は、修正してください。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445773.html技術記事プログラマーは (一般に) 優れたプログラミング言語を、自分が最もよく知っている言語、または最も頻繁に使用する言語と定義します。私は PHP プログラマー、ジョンは JavaScript プログラマー、DHH は Ruby プログラマー、シュワは...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php7检测tcp端口不好用怎么解决php7检测tcp端口不好用怎么解决Mar 22, 2023 am 09:30 AM

在php5中,我们可以使用fsockopen()函数来检测TCP端口。这个函数可以用来打开一个网络连接和进行一些网络通信。但是在php7中,fsockopen()函数可能会遇到一些问题,例如无法打开端口、无法连接到服务器等。为了解决这个问题,我们可以使用socket_create()函数和socket_connect()函数来检测TCP端口。

php7.0安装了插件还是显示未安装怎么办php7.0安装了插件还是显示未安装怎么办Apr 02, 2024 pm 07:39 PM

解决 PHP 7.0 中插件未显示已安装问题的方法:检查插件配置并启用插件。重新启动 PHP 以应用配置更改。检查插件文件权限,确保其正确。安装丢失的依赖项,以确保插件正常运行。如果其他步骤均失败,则重建 PHP。其他可能原因包括插件版本不兼容、加载错误版本或 PHP 配置问题。

php7.0怎么安装mongo扩展php7.0怎么安装mongo扩展Nov 21, 2022 am 10:25 AM

php7.0安装mongo扩展的方法:1、创建mongodb用户组和用户;2、下载mongodb源码包,并将源码包放到“/usr/local/src/”目录下;3、进入“src/”目录;4、解压源码包;5、创建mongodb文件目录;6、将文件复制到“mongodb/”目录;7、创建mongodb配置文件并修改配置即可。

php7.0怎么安装部署php7.0怎么安装部署Nov 30, 2022 am 09:56 AM

php7.0安装部署的方法:1、到PHP官网下载与本机系统对应的安装版本;2、将下载的zip文件解压到指定目录;3、打开命令行窗口,在“E:\php7”目录下运行“php -v”命令即可。

PHP 服务器环境常见问题指南:快速解决常见难题PHP 服务器环境常见问题指南:快速解决常见难题Apr 09, 2024 pm 01:33 PM

PHP服务器环境常见的解决方法包括:确保已安装正确的PHP版本和已复制相关文件到模块目录。临时或永久禁用SELinux。检查并配置PHP.ini,确保已添加必要的扩展和进行正确设置。启动或重启PHP-FPM服务。检查DNS设置是否存在解析问题。

php8和php7哪个好php8和php7哪个好Nov 16, 2023 pm 03:09 PM

PHP8相较于PHP7在性能、新特性和语法改进、类型系统、错误处理和扩展等方面都有一些优势和改进。然而,选择使用哪个版本要根据具体的需求和项目情况来决定。详细介绍:1、性能提升,PHP8引入了Just-in-Time(JIT)编译器,可以提高代码的执行速度;2、新特性和语法改进,PHP8支持命名参数和可选参数的声明,使得函数调用更加灵活;引入了匿名类、属性的类型声明等等。

如何在系统重启后自动设置unixsocket的权限?如何在系统重启后自动设置unixsocket的权限?Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

记录一次用strace诊断php占用系统资源过高的问题记录一次用strace诊断php占用系统资源过高的问题May 03, 2024 pm 04:31 PM

本地环境:redhat6.7系统。nginx1.12.1,php7.1.0,代码使用yii2框架问题:本地的web站需要用到elasticsearch服务。当php使用本地服务器搭建的elasticsearch时,本地的负载都是正常。当我使用aws的elasticsearchservice服务时,本地服务器出现负载经常过高的情况。查看nginx和php日志,发现没有异常。系统的并发连接数也不高。这时候想到我们老大给我讲的一个strace诊断工具。调试过程:查找一个php的子进程idstrace-

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール