web-dev-qa-db-ja.com

PHPにどのような機能が必要ですか?

今はホリデーシーズンであり、みんなが願っていますので、どの言語機能を望みますかPHPが追加されますか?言語の実用的な提案/願いに興味があります。実用的なI平均:

  1. 実際には実行できる何か(「PHPは私のコードの意味を推測してバグを修正してくれると思います」または「すべてのコードが5ミリ秒未満で実行されることを望みます」ではありません))
  2. PHPを別の言語に変更する必要がないもの(ない:「$記号を削除して中括弧の代わりにスペースを使用したい」または「I PHPコンパイルされ、静的に型指定され、その名前に#が含まれていた ")
  3. 既存のコードをすべて壊す必要がないもの(「500関数の名前を変更して、それらのパラメーターの順序を変更しましょう」)
  4. が行うことは、言語またはその興味深い側面を変更します(そうではありません:「XYZプロトコルをサポートする拡張機能があったらいいのに」または「バグが欲しいのですが」 #12345が最終的に修正されました」)
  5. 暴言以上の何か(ない:「私はPHPはそれほどひどく吸わないでほしい」)

誰か良い願いがありますか?

Mod編集: Stanislav Malyshev はコアPHP開発者です。

88
StasM

名前付きパラメーターは気にしません。

getData(0, 10, filter => NULL, cache => true, removeDups => true);
// instead of:
getData(0, 10, NULL, true, true);

// or how about:
img(src => 'blah.jpg', alt => 'an albino platypus', title => 'Yowza!');

残念ながら、PHP devs そのアイデアを打ち倒しました はすでに。

より逆参照:

echo something_that_returns_array()[4];

他の人は名前付きパラメータと短い配列構文について言及しました。短いオブジェクト構文も気にしません。

$a1 = array(1, 2, 3, 4);
$a2 = [1, 2, 3, 4];

$b1 = (object)array('name' => 'foo');
$b2 = {'name' => 'foo'}; // or something?
93

PHPで約13年間、そしてJSで約4年間働き続けた後、私が思ういくつかのことがあるPHPはJSから借りる:

1)配列とオブジェクトの省略表記。私はこれが議論されて内部を撃墜されたと思う(そう聞くと、ソーセージがどのように作られるのか見たくありません)が、私は本当に、JSの配列とオブジェクトの文字表記が大きいことに気づきました生産性の勝利。

例えば:

$arr     = [1,2,3,4];
$assoc   = [foo=>'bar', baz=>'boo'];
$stdobj  = {foo->'bar', baz->'boo'};

(私見)は書くよりもはるかに簡単できれいです

$arr     = array(1,2,3,4); // not too bad
$assoc   = array("foo"=>'bar', baz=>'boo'); // not too bad either
$stdobj  = new stdClass; // this gets pretty rough
$stdobj->foo = 'bar';
$stdobj->baz = 'boo';

混乱の可能性についての懸念が提起されたと聞きましたが、実際には、これは、たとえば、ヒアドキュメント表記よりも混乱していますか?少なくとも、PHP=でstdClassオブジェクトを作成することは、実践を思いとどまらせるほど詳細であると思います。

2)以前に定義された関数とメソッドを再定義できることは、本当に有用でしょう。これは、クラスを拡張する状況を単純化し、新しいクラスのインスタンス化は非常に複雑であるか、または非現実的です。ただし、コア/非ユーザースペース関数およびメソッドの再定義は避けるべきだと思います。


これら2つに加えて、私はPHPmust透過的にUnicodeをサポートするだと思います。これは開発者にとってますます問題になりつつあり、現在PHPで提供されているソリューションは混乱を招き、パフォーマンスが低下することがよくあります。標準の文字列機能すべてをそのままの状態でユニコード対応にすることは、 PHPプログラマーにとって大きな勝利です。

質問してくれてありがとう!

72
Funkatron

かつてのPHP謝罪者として私が望むこと:

  1. 配列の短い構文。 PHP配列は、その柔軟性のために言語の最も優れた機能の1つですが、some_array_method($argity, array('key' => $value));を記述するのは簡単ではありません。残念ながら、この提案はすでにPHPメーリングリストから削除されたと思います。
  2. finallyサポート
  3. 属性/注釈。これらを使用すると、コードを再利用できる方法でメソッドにカスタム動作を追加できます。たとえば、MVCフレームワークでは、AuthorizeAttributeを定義できます。これは、コントローラーまたはアクションメソッドがユーザーの承認を必要とすることを示します。フレームワーク自体は、属性を探し、それに応じて動作する責任があります。 PHPUnitは、リフレクションを使用して読み取ることができるdocblockコメントに属性を配置することですでに一種の属性を使用していると思いますが、実際の機能をdocblockコメントに配置することは確かにハックです。
  4. 短いラムダ構文。 function($x){ return $x*2;}を書く代わりに、_$x => return $x*2_などを書くこともできます。これもまた、この機能を使用するのはちょっと面倒なことです。たとえば、$results = array_filter(array(1,2,3), function($a) { return $a % 2; }):$results = array_filter(array(1,2,3), $a => return $a % 2 );の場合、前者には非常に多くの配管があり、達成しようとしている実際の作業には基本的に関係ありません。
  5. 通常の演算子による数学演算をサポートする組み込みDecimal(固定小数点演算)は、演算子のオーバーロードがないため、一種のニースです。
  6. MOAR MAGIC METHODS。魔法の方法は素晴らしいです。 PHPが魔法のメソッドを介して演算子のオーバーロードを追加しているのを見ることができました(これは基本的に発生しないことを知っています)。
48
davidtbernal

PHP本当にオブジェクト指向です。PHPの_slap on another global function_の進化は終了する必要があります。

_array_merge(array_filter(array_intersect_key($arr1, $arr2), "is_int"), $arr3);
_

これは私には読みにくいです。私は自分のメンタルスタックを作成し、自分でコンパイルする必要があります。基本的には逆に読むべきです。 $dog->wakeup()->bark();bark(wakeup($dog))に比べて読みやすい

_$arr1->array_intersect_key($arr2)->array_filter("is_int")->array_merge($arr3);
_

オブジェクト/メソッドのサポートを有効にするためのステップを完了しました。実際のコアPHP関数で使用してください。

500個の関数の名前を変更し、それらのパラメーターの順序を変更してみましょう。

この機能をメソッドにシフトすると、一貫した方法で名前を変更できるようになります。文字列と配列に独自のメソッドがある場合、下位互換性が失われますか?

48
Keyo

言語統合クエリエンジンはすばらしいでしょう。 LINQと呼ばれる.NETで利用可能なもののようなものです。これにより、大量のデータの配列を整理し、データベースアクセスを標準化できるため、SQLインジェクション攻撃が成功する可能性が低くなります。

40
Nick Berardi

ああ。プリミティブのヒントを入力します。それはいいね。

38
ruurd

私は箱から出してすぐにより良いユニコードのサポートを望んでいます。ほとんどの言語はその方向に移動しますが、PHPにはまだ奇妙なコマンドが散らばっています。

PHP文字列は単なるバイト配列です。現在のデフォルトのエンコーディングに依存しているため、コンテンツは移植できません。

同じことが、serializeによって作成された表現にも当てはまります。これには、実際にエンコード情報を保管せずに、文字列の長さが前に付いたバイト表現が含まれています。

ほとんどのPHP(string)関数にはUnicodeについての手掛かりがありません。各関数のリスクレベルを含む詳細なリストについては、以下を参照してください。 http://www.phpwact.org/php/ i18n/utf-8

http://blog.ginkel.com/2010/03/php-unicode-support-or-the-lack-thereof/

34
Emil Stenström

組み込みのメソッドを使用して文字列オブジェクトを作成し、一貫性のない名前とパラメーター化された非オブジェクトのものを置き換えます。例えば.

$subject->replace($search,$replace);
$string->split($separator);
$string->trim();

等.

編集:もう1つ:エンコーディングを処理することを特に目的としたものを除いて、これらのメソッドは常にUTF-8を予期して発行する必要があります。入力が無効なUTF-8の場合、関数の出力がエンコードの影響を受けない場合でも、例外がスローされます。

32
rjmunro

1)新しくインスタンス化されたオブジェクトが「$ this」を返すようにしたいので、メソッドチェーン$ user = new User( 'john')-> setLastName( 'Doe')-> save();

2)これまでにRubyを使用したことがあり、最近のノードでは、インタラクティブなシェル(IRB)が優れています。私はPHPが実際に役立つものを手に入れたいと思っています。

3)特性/混合ですが、それらは途中であると聞いています。

4)短い配列の2番目にしたい$ myArray = ['my'、 'array'];

5)一貫性のある命名/順序(つまり、針干し草)

24
Jakefolio

1)include()を削除してください。他のファイルへの参照は参照である必要があり、実際に1つのソースコードファイルの内容を別のソースコードに配置しないでください。 PHPプログラマーは、ライブラリを参照する手段としてではなく、関数呼び出しのタイプとしてinclude()を使用しています。これにより、変数の状態や不安定なコードであらゆる種類のあいまいさが生じます。これをPerlのような「use」コマンドに置き換えます。

2)PHPアプリケーションを単一の配布可能なバイトコードファイルまたは実行可能ファイルにコンパイルする標準メソッドを提供してください。これにより、商業開発言語としてのPHPの魅力が大幅に高まります。これは言語の基本的なコンポーネントでなければなりません。アプリケーションのGUIに使用されるhtmlファイルについて心配する必要はありません...

3)PHPタグをHTMLに埋め込む機能を削除してください。または、少なくとも「埋め込みなし」モードを提供します。これは完全な混乱であり、アプリケーションロジックとプレゼンテーションを一緒に混合することにより、悪い設計を助長します。開発者は、表示にテンプレートを使用し、PHPファイルを一緒に平手打ちするのではなく、最高のものを期待する必要があります。

署名済み、

グランドマスターB

pS:ここで他の人が言うことを聞かないでください、私は一年中ニースでした

20
GrandmasterB

E_ERRORを含む文字列であると想定するのではなく、未定義の定数に対するE_NOTICEへのiniディレクティブ。

18

初心者にとって意味のある、よく考えられた命名規則でグローバル名前空間を正規化してください!

私たちの最愛のジェフ・アトウッドを引用すると: PHPはうんざりしますが、問題ではありません

14
David Murdoch

1)JavaScriptのより短い配列/オブジェクト構文(前述のとおり)

2)const変数がdefine()のような計算の結果を許可することを許可します。

3)コンストラクターから直接チェーンする:new User()->name('Ryan');

4)配列の逆参照:something_that_returns_array()[4];

5)拡張されたSPLサポート。 SPLは、(とりわけ)文字列関数と配列関数をオブジェクトとして再考するという適切な仕事をします。 SPLを拡張することで、言語がぎこちないことに関する多くの不満を解決できます。

6)ArrayObject()の使用は、array()の使用と同じくらい透過的である必要があります。 array_filter($array_object_instance)を実行しなくても、array_filter($array_object_instance->getArrayCopy())のようなことができるはずです。もちろん、さらに良いのは$array_object_instance->filter()です。

7)完全なUnicodeはいいでしょう。

8)奇妙な自動型変換をやめる。たとえば、最初に明示的に文字列として型キャストしない限り、SimpleXMLElementオブジェクトをechoすることはできません。または、少なくとも、それが発生したときに何かをスローします(たとえば、厳密モード、またはerror_reporting(-1)がどんなモードでも)。

9)複数のスレッド、またはある種のイベント/非同期コールバックのサポート。これは、cURLを介して大きなファイルをアップロードしようとする場合に最も重要です。古いskoolスレッドの代わりに、AppleのGrand Central Dispatchのようなものがいいでしょう。または、非同期リクエストを作成してコールバックを定義できるJavaScriptのようなものです。

10)一貫性のある命名/順序(つまり、needle haystack)はいいでしょうが、これはSPLで解決する方が良いと思います。

11)公式にサポートされているインタラクティブなPHPシェル、IRBのような。Facebookにはphpshと呼ばれるものがあります。Pythonで書かれていますが、私が見たい洗練されていません。

12)Reflection APIの場合、(a)定数(グローバルおよびクラス)のdocblockコメントのサポート、および(b)PHPDocのようなコメントを適切なデータ構造に解析するサポートを追加します。これを実行しようとする「docblock」と呼ばれるPECLパッケージがありますが、作成者がそれほど遠くに行ったようには見えません。

編集:13)Rubyのように、関数名で!?を使用する機能も見たいです。

13
Ryan Parman
13
Kemo

CONSTANT配列を作成/定義する正当な方法を教えてください。この種の機能をシミュレートするためのハックな方法はいくつかありますが、それがPHPの単なる真っ直ぐな機能であるならば、それは素晴らしいでしょう。 Javaの「最終」宣言に似た方法で配列を作成できれば、すばらしいと思います。

セットアップが非常に簡単なログインシステムを作成しました。必要なのは、テキストファイルの配列の内容を変更して、ユーザー情報に必要なフィールドを指定することだけです。 forループのスワスを使用して、フォームの生成や入力の区別からデータベースの呼び出しまですべてを処理しますが、すべてこの元の配列に依存しています。

配列を含むファイルは権限でロックダウンされますが、配列がイーサ内を移動すると、変更可能になります。システムはかなり安全だと思いますが、私は何もチャンスに任せたくありません。配列をファイナライズする方法は、このような状況ではいいでしょう。

新しいアイデア!!

ああ、私は本当にphpで本当に欲しい何かを考えました。 .htaccessが機能するのと同様の方法で、PHPのファイル操作とディレクトリ操作を制御する何らかのシステムが必要です。

.phpaccessファイルは、ある種の同じドメイン/同じOriginポリシーをトリガーする必要があります。

たとえば、仮想ホストを使用して多くのサイトをホストしている場合、ディレクトリに.phpaccessファイルを作成して、保護されたディレクトリで動作しようとしている実行中のスクリプトの元を確認するようにphpに指示することができます。スクリプトがそのディレクトリまたはそのサブディレクトリからのものでない場合、ファイル操作またはソケット操作は拒否されます。

このようなシステムは、仮想ホスティングをより安全な環境にするでしょう。これらのいずれかを各仮想ホストの上部に配置できると、誰かが隣接する仮想ホストから侵入する方法を見つける可能性が低くなります。

また、この方法の逆にそれを保護する方法があるとよいでしょう。つまり、単一のディレクトリ内のスクリプトの範囲をそのディレクトリに制限します。

その陰と陽は知っている!

12
Dave B.

1)Pythonリスト内包表記の形式の配列内包表記:

$newlist = array($x->something for $x in $oldlist);

//with short array syntax:
$newlist = [$x->something for $x in $oldlist];

2)短い配列構文

$newlist = [1,2,3,4,...];

3)empty()が文字列「0」をtrueと見なさないようにする

12
sfrench

ハードコアとしての私の2つの最大の望みPHPプログラマー:

  1. ついにサポート。フラグや同様の方法で架空でこれを回避するのは大きな混乱です。
  2. ゲッターとセッターのC#の構文のサポートを見てみたいと思います。 getterとsetterがたくさんある場合、C =などの単純な構文は、Javaのようにしてgetterメソッドとsetterメソッドを作成する代わりに、優れたパフォーマンスブースターになります。マジックメソッドは、メンバーを動的に作成したい(たとえば、テンプレートレンダラーに使用する変数を与えたい場合)が、IDEにオートコンプリートさせたい、知っている通常のプロパティには適さないこれにより、コードが小さくなり、読みやすく、使いやすくなります。
11
Johnco

言語構文:開発者が興味を持っているものの pihipiphpreboot にはいくつかの良い手掛かりがあります(phprebootはJSになりすぎますが)。

開発方法論:このような調査を実際に考慮に入れると、PHP.netの寿命が大幅に延長されます。これ以上意地悪な午後をしないでくださいIRCセッション構文の決定。

個々の機能:いくつかは以前に言及されましたが、ここでさらに鈍くするためにいくつかのカルマを喜んで燃やします:

  • Unicode文字列タイプ。
  • Bigint(Pythonを参照)。
  • 組み込み関数とクラスを削除/名前変更/オーバーライドするRunkitビルトイン。これらは常にうまく設計されているとは限りません。
  • 最新のOOP
    • 多重継承(扱いにくい特性の構文でめったにないEdgeケースをサポートするための複雑さの代わり)
    • スカラーはオブジェクトとしても使用できます(Pythonを参照)。 array()はArrayObjectとして、または文字列はSplStringとして機能します(使用可能なメソッドが必要です。すべての文字列関数はstr::toupper()として使用できる必要があります)
  • 下品なたわごと\名前空間構文を廃止し、パーサーを修正して、代わりに::を採用します。実際の言語のようにね。
  • LINQの任意のバリエーション(あなたが賢明な構文を考案しているとは信じていませんが)
  • またはXMLリテラル。
  • Php.iniのランタイム動作とセマンティックスイッチを削除します。本当の興奮は取り除かれますが、開発者とユーザーベースに利益をもたらすでしょう。
  • はい、magic_quotesはまだなくなっていません。
  • Zend EngineのバイトコードをPBCに変換する

これが明らかでない場合でも、後者を実行するために他の人に喜んで資金を提供し、メインの実装としてphp.netを終了します。 :P
ああ、気づいたのはコミュニティのwikiです。ですから、あなたが実際にカルマのためにここにいるのではなく、純粋な興味がある可能性があります。その場合は、言語に深刻な影響を与える<b>問題</ b>を調べてください(監督官)。

9
mario

エラーと例外を1つの概念(例外)に統合したいと思います。例外をキャッチしてログに書き込み、その方法でバグを見つけて修正できるのは素晴らしいことです。ただし、コードパスに根本的に間違っているものがある場合(読み取り:PHPエラー))、ほとんどヒットしないコードパスでは、その情報を同じ問題データベースに流し込むための良い方法はありません。

サンタさん、php.iniにすべてのエラーを例外にするスイッチを導入してください。理想的には、コードでキャッチできる例外です。

8
Alex
  • 列挙型のサポート(Java 1.5+など)
  • インターフェイスとクラスで、メソッドの戻り値の型を定義できる
  • プロパティとメソッドのアノテーション/メタデータ定義のサポート。
  • メソッドのスカラー引数に対して厳密な型ヒントを実行できます。
7
Kees van Dieren

PHPは、中小規模のWebサイトをノックアップするのと同じように、私にぴったりです。私は少し想像力に欠けているに違いありません。この質問への回答として私が考えることができる唯一のものは、トラフィックの多いサイトに対してより適切に拡張できるものになるでしょう。

別のプロセスで出力ページを作成しながら1つのプロセスでデータベースを更新するなど、他のコアへのプロセスの生成に関して考えています。簡単なグーグル検索は、これはシミュレートできることを示していますが、現時点ではphpで直接サポートされていません。

7
geekbrit

スカラー型はオブジェクトとして扱われず、実際のオブジェクトは他の型またはオブジェクトのように動作することはできません(__toString()による文字列を除く)。

7
pestaa

http://php.net の「ユーザー投稿ノート」をクリーンアップします。一般的に大きな価値がある一方で、それらは時々本当の混乱です。

6
bobah

PHPにはかなりまともな配列関数がいくつかあり、リスト処理能力を提供し、コールバックとcreate_function()は基本的なラムダ計算を提供します。

それの主な問題は、PHPで非常に冗長であることです。特にmap/reduceコマンドが関係する場合は、省略形のシステムが優れています。

さらに重要なことに、リスト関数は完全ではありません。

  • foldr関数はありません。array_reduce()foldlを提供します
  • array_map()は、array_walk()が行うように、2番目の引数でキーを渡す必要があります
  • array_map_keys()はキーの変更に役立ちます
  • リストの内包表記は非常に不格好で、range()array_fill()、およびarray_fill_keys()は非常に多くのケースのみを処理し、array_filter()は別個です

私はPHPをHaskellに組み込むことを目指していませんが、PHPはリスト型のデータ構造操作に使用され、これにツールの完全なセットを持っていますよろしくお願いします。

5
Orbling

オペレーターの過負荷:

$result = $MatrixA + $MatrixB * $MatrixC;
5
MicE

大きなファイルのサポート。きれいにしてください

http://bugs.php.net/bug.php?id=27792 を参照してください(注意が必要な領域/関数が他にもある場合があります)。

4
Don MacAskill

E_WARNINGを生成する代わりに例外を追加します...次のようなものを使用できないのは非常に煩わしいです。

try{
   $f = fopen('asd', 'r');
   flock($f, LOCK_SH);

   while(!feof($f)){
       echo fread($f, 512);
   }

   fclose($f);

}catch(IOException $ex){
   echo 'Oops, something wrong: '.$ex->getCode();
}

もちろん、現在のところあまり実用的ではありませんが、受け取るのは非常に面倒です。

警告

警告

警告

正しい例外をスローするために、自分のerror_handlerと文字列をスニッフィングして、どのエラーが発生したか(権限、不正なファイル名など、ここでは他のエラーの発生源については気にしません)を書かないと、コードのフローを制御できません。 。

なぜそれが重要なのか説明しなくてよいと思います。

PHPは少し前にオブジェクト指向になりました。PHPを使用するプログラマーは、OO機能、「goto」を導入しない)を楽しみにしています...それが本当に起こったことがわかったとき、私はエイプリルフールの日だと思った。

4
eRIZ
  1. オブジェクトモデルを統合する-すべてのオブジェクトが基本オブジェクトクラスを拡張するようにします。 Objectクラスは(とりわけ)すべての魔法のメソッドを実装します(そのため、魔法のメソッドではなくなります!)

  2. 拡張機能を独自の名前空間に移動する-グローバル名前空間を整頓する$conn = new \MySQLi\Connection();

  3. spl_autoload()関数のクリップを解除します!真剣に、これはおそらくPHPの最大の機能の1つであり、同時に最も役に立たない機能でもあります。spl_autoloadはデフォルトのオートローダーで、名前空間と複数のファイル拡張子をサポートしていますが、不明な理由により、ファイル名を小文字にする必要があります。 このためのバグレポート がありますが、下位互換性があるため、スタッフは修正しないと回答しました。右...すべてのフレームワークに独自のオートローダーが付属しているわけではありません。デフォルトのオートローダーが機能しないためです!

4
Mchl

汚染サポートを最新バージョンにし、標準ビルドに含めます。できればデフォルトの構成で有効にします http://wiki.php.net/rfc/taint

これにより、人々が適切にコードを作成できるようになり、XSSおよびSQLインジェクション攻撃を防ぐことができます。

4
rjmunro

PHP=の注釈は素晴らしいでしょう。今後数年間目立つ1つの機能です。この機能は、クリーンなコードで大きなフレームワークを書くのに役立ちます。

3
user10916

elsewhile、およびforforeach句を確認してください。例えば。:

while (/*condition*/) {
   /* display each result */
}
else {
   /* condition was never true; display "no results found" message */
}

elseブロックは、whileの条件がnever trueの場合にのみ実行されます。

これにより、ブールフラグを追跡する必要がなくなり、境界のケースと考えられるエラー条件について考えるのに役立つ可能性があります。

3
Macneil

短いオープンタグ、特にecho one =(を削除しないでください。これ:

<?=$myvar?>

...これよりはるかに優れています:

<?php echo $myvar;?>
3
dukeofgaming
  1. 私はいつかデータ型を見たいです-データ型を扱う必要がないという単純さも好きです、これは私にとって両刃の剣です。
  2. 名前空間
  3. 異なるメソッドシグネチャを持つ関数呼び出しのオーバーロード
  4. ユニットテストとコードインジェクションのサポートが改善されたPHPUnitは素晴らしいツールです。Symfonyのコードインジェクションフレームワークも不思議です...しかし、それらはすべて独自の学習曲線を備えています。
3
cdnicoll

optionaltype safeについて誰も言及していないようです。

次のようなコードを記述できると便利です。

<?php
$someVariable = 123;
$someVariable = "Hello World";

int $anotherVariable = 123;
////$anotherVariable  = "Hello"; // This must cause runtime exception.
////int $lastVariable = "World"; // This must cause it too.
?>

もう一つの例:

<?php
// Current style (which must remain).
function SayHello($howManyTimes)
{
    if (!is_int($howManyTimes))
    {
        throw new Exception('Argument $howManyTimes is invalid. An integer was expected, instead of ' . gettype($howManyTimes) . '.');
    }

    echo str_repeat('Hello', $howManyTimes);
}

// New, optional, style, allowing to have a shorter code.
function SayWorld(int $howManyTimes)
{
    echo str_repeat('World', $howManyTimes);
}

SayHello(123);
SayHello("Hello World");

SayWorld(123);
////SayWorld("Hello World"); // This must cause runtime exception.
?>
2

次のようなinclude呼び出しからのファイルの名前空間を許可します

include('mytemplate.php', 'MyNamespace');

または

include 'mytemplate.php' use MyNamespace;

そして、接頭辞なしで名前空間をインポート( "使用")できるようにします。

use OtherNamespace as self;

(名前空間接頭辞なしで使用するために個々のクラスをインポートする必要はありません)

2
user11122
  • ノンブロッキングSQLクエリ(ログを挿入するのと同じですが、クエリの結果を待たないでください)
  • 並列SQLクエリ

ただの夢

2
Erlango

ジェネレータ。 Pythonと同様に、yieldを使用します。

2
ts01

__destructorまたは__toStringで例外をスローする機能。そして、本当に、それが不可能である理由は何かありますか?

2
ts01

メソッド内のパラメータのプリミティブ型(ブール値、ブール値、整数値、整数値、浮動小数点数、倍精度浮動小数点数、オブジェクト)を配列として設定できる可能性があればそれでいいでしょう。

例:

  • 電流:

    class HttpResponse {
    public function __construct($version, $statuscode = HttpStatus::OK, HttpResponseHeaders $headers = array(), $body = '');
    

    }

  • 望む:

    class HttpResponse { public function __construct($version, integer $statuscode = HttpStatus::OK, HttpResponseHeaders $headers = array(), string $body = ''); }
    

また、役立つAssert静的クラスがあると考えました。

2
user11251

すべての型の型ヒントのサポート、および可能なすべての型の_toXXXマジックメソッド。 (phpの一般的な使用法は、型変換を制限するためにIMHOをドリフトさせます/変換float <-> int /などのいくつかの例外を除きます)

2
ts01

メソッドシグネチャを区別するための型ヒントを使用した、確実なメソッドオーバーロード。さらに、ある種のASP.NETスタイルの「属性」を見たいので、PHP MVCフレームワークでのコントローラーアクションは次のようになります。

/* [HttpGet] */
public function login() {}

/* [HttpPost] */
public function login() {}
2
TaylorOtwell

PHPには不変のUnicode文字列クラスが必要です。入力文字列が有効で正規化されたUTF-8であることと、それが有効なままであることを確認することは簡単です。

$str = new Utf8String('āll īs ōk');
$str = $str->ucwords(); // Āll Īs Ōk
$str = $str->strtolower()->toAscii(); // all is ok
(string) $str; // UTF-8 bytes

PHP-UTF8 に基づいて prototype を作成しました。

2
Steve Clay

ネイティブ正規表現リテラル、Perlスタイルの_qw{}_、_qq{}_および_q{}_引用符。

すべてのオブジェクトのチェーンメソッド呼び出し:$object{ ->method1(); ->method2(); ->getPerson()->getName(); }

ステートメント式:_({echo $a; $a = $a + 1; $a})_

一貫性があり、構成不可能で、_short_open_tags_をオフにできません。設定できない場合は、PHPコードの移植性が向上します。 [〜#〜] erb [〜#〜] -スタイルタグを含むWHAを参照してください

1
Ming-Tang
  • ホストごとに1つのディレクティブを構成する必要なく、ドメイン名に基づいて仮想ホストにopen_basedirを自動的に設定するネイティブな方法が欲しい(Jason Greeneパッチに似ているが、ネイティブ)。

  • アプリケーション全体のグローバルをどうぞ!初期化されると、アプリのグローバル変数はすべてのphpスクリプトで使用できるようになります。

  • それらを閉じずに他のスレッドのセッションを解放するいくつかの方法:

 session_start(); 
 $ _ SESSION ['favcolor'] = 'white'; 
 session_flush(); //セッションのブロックが解除され、他のスレッドが使用できるようになります
 //巨大ループ... 
 $ _ SESSION ['taste'] = 'sweet'; //セッションは自動的に再びブロックされます
 session_close(); 
  • おそらく、ディスク上のキャッシュがいいので、実行を高速化するためにphpスクリプトを手動でプリコンパイルできます。メモリキャッシュに似ていますが、ディスク上のファイルと手動生成(おそらく、いくつかの新しいファイル拡張子を使用)があります。

  • また、<?php = $ variable?>に似たものを<?php echo $ variable;へのショートカットとして使用します。 ?>はいいでしょう(aspタグと同様ですが、short/aspタグが無効になっています)。

1
Bacco

そして、明らかに、get_shutdown_functions()とunregister_shutdown_function()です。現在、それにアクセスする方法はありません。そして、より一般的には、コールバックスタックのいくつかの抽象的なサポート-spl_autoloads、シャットダウン関数、エラーハンドラー(現在はスタックできませんが、おそらく...)などを統合するものです。register_callback($ callback、$ stack)の種類など事前定義されたスタック( 'autoload'、 'shutdown'、 'error' ...)は、phpまたはユーザー自身によって呼び出されます。

1
ts01

リソース(curl、ftp、Gd2 ...)を使用して拡張機能のオブジェクトラッパーを追加する。お気に入り

 $oFtp = new Ftp();

 $oFtp->connect();

 $oFtp->close();
1
ts01
  • ラムダの字句スコープ(別のキーワードを使用してから関数を使用)(またはブロック構文で適切な字句スコープを作成しますか?)
  • オブジェクトプロパティのラムダを呼び出し可能にする
  • 常にセミコロンとラムダ右中括弧を意味します
  • 通常の関数のadd use()をクソ!!
  • 特性
  • instanceof/is_a()をインターセプトする機能
  • 発電機
  • ランタイム変更のために例外を開く
  • 実装せずにインターフェースをチェックする関数
1
alan blaire

私の最初の2つの不快な点はPHPとは関係ありませんが、暗黙の使用法に関するものです。

  1. ライブラリコード(たとえば、PEAR/Horde/Zend/etc)の「ファイル名拡張子」は、_.phps_ではなく_.php_で終わる必要があります。これの利点は、実行するコードと含めるコードが明確に分離されていること、およびオプションですべての(ユーザーの)コードがサーバーからかなり読みやすい/参照できることです。おまけとして、spl_filename_extensions()を他の人の便宜のためにオートローダーで使用できます。

  2. (ドキュメント内の)規約では、_::_は静的メソッドとインスタンスメソッドの両方に使用されます。静的に_::_を使用し、インスタンスに_->_を使用する場合はありがたいです。良い慣習として、解釈に関するエラーの余地はまだありますが、それは少なくともより明確です。

いくつか例を挙げると、以下も確認したいと思います。

  1. Reflection *のgetDocComment(またはおそらく名前や引数の別のバリアント)は、よりリベラルであり、前述の型の最初のコメント(スペースまで)のみを取得する必要があります。言い換えれば、私は、どのような種類のコメントタイプでも最低限を提供できるようにしたいのですが、詳細(読み取り:行を食べる)文書コメントは好きではありません:_//_、_#_、または_/* ... */_。

  2. 使用されている名前空間のリスト。 getdefinednamespaces()

  3. 「未定義の定数」の動作は、iniディレクティブによって変更できる必要があります。空の文字列または致命的なエラー。それにもかかわらず、暗黙的に文字列に変換されるべきではありません! (JavaScriptの;のようなものです)。

  4. 定数___CLASS___も、自動的に(静的に呼び出される)_stdClass::__CLASS__ == '\stdClass'_のように機能します。つまり、文字列でクラスを参照する代わりに、クラスとそのマジック定数___CLASS___を使用してクラスを参照したいと考えています。 (はい、それは外接です)

  5. 型キャストと魔法のメソッド__fromType($instancetype)および__toType($type)。したがって、オブジェクトは整数にキャストできます:$y = (int) $xまたは別のオブジェクト$y = (BeanWrap) $x。それにもかかわらず、これの実装は、8つの異なるタイプをカバーする12の使用可能なキャストのうち、これらのキャストの名前をクラス名(たとえば、int、binary、boolean)として使用できなくなったことを意味します。

1
23JUL

このスレッドを見たとき、私が遭遇したいくつかの記事について言及することは有用だと思いました。

  1. Groovyの一種Groovy's?。 PHPの演算子: http://justafewlines.com/2009/10/groovys-operator-in-php-sort-of/
  2. クロージャを改善する: http://justafewlines.com/2009/10/whats-wrong-with-php-closures/
1
Alexey Shein

notに十分賢く、後方互換性を壊します。 gotoがキーワードとして存在することを一生懸命学びました。メソッド名としてそれを使用していたため、php 5.3のコードの更新に2〜3時間かかりました。

クラスのロールのようなものは、オブジェクトシステムへの良い追加です。複雑なことは何もありません。

class abc { use xyz::method; use uvw::__all; }

これは、クラスxyzからメソッドmethodを、クラスuvmからすべてのメソッドを選択します。

コンストラクタ呼び出しは、作成後すぐにオブジェクトとして使用できる必要があります。

new goodie()->youp();
1
giftnuss
  1. スカラーをオブジェクトのように扱うことができます。 $ scalar-> toLower();を実行しようとすると、なぜ私が間違っていると言うのですか? 「スカラー」オブジェクトタイプのようなものに一時的にキャストしてから、「未定義メソッド」に移動するのはなぜですか(おそらくこれをnullとして実行しないでください)。

  2. ユーザースペースからリソースを削除します。 PHPにはオブジェクトがあります。リソースになっているものはすべて、プライベートプロパティとして非表示にするオブジェクトラッパーに含めることができます。__sleep()および__wakeup()に機能を追加する必要がある場合があります。ほとんどのリソース「同じような」状態で簡単に再作成できますが、できなくても、PDOオブジェクトはシリアル化できません。他のオブジェクトでも同じことができると思います。

  3. 実際のPHPコミュニティがコードを使用して投票できるようにします。既存のメソッド、クラス、および関数を再定義できるようにします。JavaScriptの場合と同様に、不正なコードはローテーションします。人々にPHPを使用すると、常に推測する必要がなく、必要なものがわかります。最も可能性が高いと思われる使用/オーバーライドされた機能と機能を検討する必要があります。

    これには、PHPコミュニティにUTF(できればUTF-8)の問題が含まれる)という副作用もあります。ユニコードをオンまたはオフにするシステム全体の設定ではなく、PHP開発者は、アプリケーションだけに必要な機能をオーバーライドできます。

  4. _暗黙の名前空間区切り文字にします。人々はPHP5からそれを使用しています。もしPHP 5.3の場合、書き直さずにコードを構築してください。5.3。それの複雑さはわかりません。最初はコードについていくつかの考えがあることを知っています。 Zend_Exceptionのようなクラス名を使用する:これを許可すると、開発者は常にZend_Exceptionまたは\ Zend\Exceptionとしてアクセスし、決してExceptionにはなりません。1つだけではなくフルネームとして扱います。

  5. OOP:Javascript/Actionscript/Pythonからヒントをいくつか受け取ります。トレイトは有望に見えますが、実行時に動的にタイプを変更することは素晴らしいでしょう。

  6. プロパティ:プロパティに関する作業が進行中のようです。動的に実装してください。 PHPは動的言語であると想定されています。実行時に(ほとんどすべての)プロパティを定義できるはずです。

  7. 定数をそれらが使用されているものとして扱います:グローバル変数。クラス/関数/名前空間はすべてこの法案に適合します。多分誰もが今はすべてがグローバルであることを認識し始めたとき、非常に多くのグローバル変数/定数があるという問題を解決するためのアイデアがもっとあるでしょう。

  8. JITコンパイル:JavaScriptはそれを実行でき、超高速です。 PHPは、これの背後にある数少ないものの1つです。

  9. PHPは「ハイパーテキスト」用に最適化されているはずですが、そのように出力をエスケープする簡単な方法はありません。個人的には、htmlspecialchars()を実行するために「印刷」を再定義します。全体として、それは単にprinthまたはechohである必要があるかもしれません。

  10. Php.iniを簡略化します。 php.iniはシステム管理者向けであり、開発者向けではありません。短いタグの非互換性を削除、修正、または削除します。システム管理者がシステム全体の言語機能をオン/オフできるのは面倒です。そして、ソフトウェアを配布しようとするときにそれらを回避します。

  11. PHP開発者がリクエストサイクルの終了後に存在することを許可します(FastCGIおよびApacheの場合)。これをAPI経由で公開します。システム管理者がこれを無効化または制限できるようにします。(phpプログラムが制御を返すように要求します10秒以内にディスパッチャーに送信されるか、永続的なステータスが失われます)。

  12. PHPを一般的なプログラミング言語にします。<?phpタグは煩わしいです:!#/ ...

  13. オブジェクト{}および配列[]を作成するための略語、Tajeは PiHiPi を見て、これと他の多くの単純な構文上の砂糖を実装しています。

    14:[]がオブジェクトのプロパティと関数にアクセスできるようにします。関数とクラスは今や一流の市民ですよね?オブジェクトのオブジェクトに動的にアクセスするための事実上の方法(javascript/actionscriptなど)を作成します。

  14. PHPコードをPHPモジュールにすることを許可します。ライブラリを複数のプロセスでシステム全体で使用できるようにするためだけに、Cを学ぶ必要はありません。 PHPコミュニティはこれをもっと理解します。

  15. Java/Cからアイデアをとるのではなく、Javascript、Actionscript、Pythonなどの動的言語からアイデアを取り入れてください。より具体的な機能を以下に示します。

  16. 致命的なエラー:ほとんどのエラーがまだ回復できないのはなぜですか?エラーをログファイルに記録するという概念が大好きです(非常に高いレベルで実装されています)。私が嫌いなのは、常に「ホワイトページ」について聞くことです。私はコードで多くのチェックと宣言を行ってこれらを回避しています:しかし、誰かがオブジェクトの代わりにnullを関数に渡すと、神はPHPを作成せずにこのような壊滅的な状態から回復できることを禁止しますis_null()を自分で行います。確かにエラーです。他のほとんどの言語では、これをNullReferenceError/Exceptionと呼んでおり、これを処理して、白い画面以上のものを表示することはできます。

    少なくとも、致命的なエラーの追加を停止してください。 PHP 5.2を実行している多くのサーバーをアップグレードできますが、できません:古いコードを修正するために各サーバーの200を超えるサイトを通過する時間がありません。 。追加する新しい致命的なエラーが少ないほど、新しいバージョンのPHPで人々を参加させる可能性が高くなります。

    言語から致命的なエラーをできるだけ削除します。 PHPは動的言語であると想定されています。他のすべての言語がほとんどのエラーから回復できるのはなぜですかPHPは致命的と見なされますか?プログラマはエラーを回避できますが、プログラムは、ほとんどの言語がNullReferenceExceptionを考慮した後に強制的に終了します。

  17. 例外を再開可能にします。したがって、例外とエラーをより簡単に混在させることができます。

  18. (最も時間がかかり、ほとんどありません)言語のディスカッション、API /モジュールのディスカッション、およびインタープリターのディスカッションを分離します。現在のように統合する必要はありません。現在のインタープリターに関する問題は最後に理解する必要があります。 Pypy/Parrot/JVMはすべて複数の言語をサポートしています。 V8はそうではありませんが、他の言語をJavaScriptにコンパイルしてV8で実行し、その機能を利用するのに十分な速さです。

    Interpretter/runtime/vmとして、開発目標は言語とは少し異なります。 PHPを使用すると、同じように感じられます。そのため、他のインタープリターを開発しようとする人々は、言語設計に関するすべてのディスカッションとPHPインタープリターに関するディスカッションが混ざっている場合、ディスカッションについていくのに苦労しています。

    通訳者としては、通訳者がサポートする言語が多ければ多いほど良いと思います。 <?python、<?javascript、<?actionscriptを使用できないのはなぜですか。別の言語でコードを書き換えるのに飽きたので、そこで使用することもあります。すでにこれをやろうとしている人もいるでしょう。コミュニティの他の地域からの支持を集めることでしょう。

1
Reece45

私の一番の特徴は

演算子のオーバーロード

私の意見では、ここで求められている繰り返し機能の1つ、つまりオブジェクトとしてのネイティブ型は、独自のラッパークラスを作成することで修正できます。私はプロジェクト用にarrayDataオブジェクト、stringDataオブジェクト、intDataオブジェクトなどを開発しました...これは解決します:

  • 強い型付け:これらはカスタムクラスであるため、強制できます
  • 型のオーバーロード:arrayDataクラスに必要なメソッドを追加できます
  • 型変換:各クラスには-> toArray()、-> toInt()、-> __ toString()メソッドなどがあります。
  • テンプレートでのHTMLエスケープ(文字列はstringDataクラスを拡張するuserStringDataクラスです)。
  • 特に指示がない限り、値は常に参照によって渡されます
  • intData( 'string')を作成すると、例外がスローされます。
  • など(メリットのリストはまだ非常に長いです)

Imho、これは、必要なメソッドの正確な数を取得して、好みに応じて呼び出すことができるため、オブジェクトとしてのネイティブ型よりも有益です。

しかし、私があまり見逃しているのは、オブジェクトでネイティブオペレーターを使用する機能です。 arrayAccessのおかげで、[]演算子を使用できます。しかし、「+」、「-」などを使用することはできません。できれば、stringData + stringData($ string。$ stringと同等)、またはstringData-stringData(str_replace($ str、 'と同等)を使用できます。 '、$ string))、または私のタイプを ">"および "<=" ...と比較します。
現在の実装では、$ intData-> add($ n)、$ intData-> substract($ n)などを使用しています。面倒、特にネイティブのintまたはintDataオブジェクトのいずれかを期待できる関数で。つまり、各関数内のinstanceOfで確認する必要があります。

つまり、私のクラスは準備ができており、最適化されていて、ニースですが、演算子をオーバーロードできるようになるまでは、概念の証明にすぎません。実際のプロジェクトでそれらを使用するのは面倒です。

0
Xananax

Zval参照カウントを公開します。 (そうです、 xdebug_debug_zval を使用できますが、ライブサイトでXdebugを有効にします。)使用例:アクティブレコードオブジェクトストア-外部リソース(データベース行など)に対応するモデルがあり、それらのリソースを変更する責任があります。同じリソースに対して2つの個別のオブジェクト表現があると悪い(書き込みの競合によるデータの損失など)ため、要求されたリソースのモデルが既にロードされている場合は、それを返すことができる何らかのキャッシュが必要です。ただし、ガベージコレクションは強制終了されます。モデルオブジェクトへの最後の参照は常にキャッシュに残るため、大きなDBクエリや大きなディレクトリなどの大量のリソースセットを反復すると、メモリがすぐに消費されます。これは、オブジェクトストアが、格納されたオブジェクト(ストア自体)への参照が1つだけであるかどうかを確認でき、そうである場合は破棄できる場合は回避できます。

0
Tgr

PHPにいくつかのerlang機能が必要です:

  • ホットコードローディング
  • 原子
  • パターンマッチング(関数の名前、一致するステートメントなど:の場合)

バイトコードの操作:保存、ロード、削除など...

柔軟な埋め込みシステム

0
Dan

最近のPHPの進歩とスケーラビリティが気に入っています。

Javaで導入された新機能は、物事を単純にするのではなく、物事を複雑にするだけです。

リクエスト1:追加ライブラリとしてのdb-connection-pool機能。

リクエスト2:

組み込みのライブラリとして、リバースajaxまたは彗星プログラミングまたはRTMP機能を求めています。これらは、.net、Java、pythonおよびPerl for dojo Foundation向けにすでに開発されています。

PHPにも同様の機能がありますが、完全なソリューションではありません。

  1. また、SPLのオブザーバーパターンのサポートもあります。しかし、適切に文書化されていません。
  2. Xajaxフレームワーク(良いですが、アプリケーションの再設計が必要です)

またね。

0
Shashank

私の日になるいくつかのこと

  • 組み込み関数の正しい命名規則。
  • 文字列と数値のタイプヒント
  • 戻り型のヒント
  • E_STRICTはデフォルトでオン
  • 特性、ミックスイン、多重継承
  • すべてがオブジェクトです(つまり、Rubyのような純粋さ)
  • 追加::名前空間へのサポート
  • Windowsサポートの改善
  • すぐに使えるテスト
  • Exec()の不十分な動作に関するより良いドキュメント
  • Php.netをlive-searchで再設計
  • すぐに使えるXdebugのような機能
  • PEAR移植性の改善-Ruby gemsのユーザーは知っておくべき
0
Grayson

私は本当にアノテーションが欲しいのですが、RFCが削除されたことを知っています。

0
crystal88_
  • UTF-8サポート
  • RubyおよびPythonすべてがオブジェクトであるという概念)を借りて、言語を完全にOOにします。オートボクシングrfcがちょっと好きです。しかし、自由度が高すぎます開発者にとってはそれほど良くありませんが、いくつかの制限がありますが、言語の進化に素晴らしい追加になる可能性があります。

$ x = array(5、60、50、50); $ x-> map(function($ i){return $ i * 2;})-> Push(10);

$ p = "文字列"; $ q = $ p-> substring(0、10);

等.

私の意見では、これは現在のグローバル機能を壊すことなく行うことができます。ただし、それらのほとんどは役に立たなくなり、時間の経過とともに廃止される可能性があります。

  • 配列の短い表記はいいですが、言語にとって重要ではありません。
0
Josh Scott

ループへの参照を渡すforeachループでiterableを拡張するクラスを使用できると便利です。

 foreach(&$ myclass as $ me){
 echo $ me; 
} 

私はそれが現在動作しない理由を調査するのに多くの時間を費やしていません。おそらくそれはイテラブルがどのように動作するかに関連しており、動作しないことに気付く以上の調査はしていません。

0
gabe.

高速関数呼び出し

call_user_func($f,$a1,$aN)がありますが、$f($a1,$aN)に置き換えられました。ただし、call_user_func_array($f,$args)にはそのようなものはありません。

私の提案は、_$f{$args}_などの特定の言語構文を作成することです。誰もが_call_user_func*_から1マイル離れた場所にいる必要がある理由は、より良い代替手段があるという意味で非常に遅く、見苦しいためです。

オブジェクトdecleration構文

現在、オブジェクトをその場で作成するには、_(object)array('prop'=>'value');_が必要です。慣例として、object('prop'=>'value');も必要です。また、JSONと同様に、短い構文も便利です。

型のためのすべての終わりのすべての魔法の方法

現在、__toString()があり、提案された多くの___toInt_/___toFloat_/etcがあります。私のアドバイスは、__toType()または__typecast()を実装することです。これは、最初のパラメーターとして、目的のデータ型が渡されます。例:

_class Test {
    public function __toType($type){
        switch($type){
            case 'integer':
                return (int)$this->age;
            case 'string':
                return $this->age.' years';
            default:
                throw new EUnsupportedTypeException();
        }
    }
}
_

より具体的にしたい場合は、$ typeの後に別の引数、つまり$ classを追加できます。したがって、次のことができます:if($class=='person')return new Person($this->age);

foreachでのデータ型の指定

現在、PHP関数の引数のデータ型を次のように指定できます。

_public function say_hello_to(UserClass $user){
    $this->say('Hello, '.$user->name.'!');
}
_

これをforeachでも行うとよいでしょう。

_public function on_enter_office(){
    foreach($users as UserClass $user) // <- See UserClass here?
        $user>say_hello_to($this);
}
_

現在の「修正」は次のようにクロージャを使用しています:

_public function on_enter_office(){
    $users->each(function(UserClass $user){
        $user>say_hello_to($this);
    });
}
_

この修正は、より多くのリソース、より多くの記述、および範囲の混乱を必要とします。そのため、ネイティブソリューションにより、現在の修正よりも簡単で、クリーンで、おそらく高速になる理由がわかります。

条件付き定義

これはおそらく多くの人にとって便利な機能ではありませんが、古いシステムと互換性がある場合でも実行中のコードを最小限に保ち、実行を高速化するための優れた方法です。次のコードを検討してください。

if(!function_exists( 'json_encode')){function json_encode($ value、$ options = 0){//従来のコード}}

  • _// legacy code_セクションは引き続き解析されるため、そこにエラーがあるとPHPが終了します。
  • それを解析すると、たとえそれがまったく必要ない場合でも、PHP=が遅くなります。
  • コードは開発者にとって直感的ではありません
  • すべてのIDE解析エンジンは、ifステートメントを無視して関数を2回リストすることになるため、混乱します。

修正?条件付きコンパイル:

_#if PHP_VERSION<5.2
function json_encode($value, $options=0){
    // legacy code
}
#endif
_
0
Christian

より優れたハイパーテキストリンクのサポート、つまり、ブラウザーのcurrent-uriを変更するために使用できるfunction/class-methodを含めます。またはまったく新しいものを作成します。 $ _SERVER ['REQUEST_URI']を使用|| $ _SERVER ['PATH_INFO']は、要求されたリソースを理解します。これにより、RESTアプリの開発などが容易になる場合があります。 (rfcのUriSchemeとデフォルトのスキーム実装によると、おそらくUriBaseを拡張する他のUriSchemesを実装できるようになります)

UriResourceクラスのようなものを提供して、クライアントからのhttpリクエストにも利益をもたらすような方法で機能の小さなスニペットをリクエストできるようにします。

テンプレートの前後に呼び出すことができる関数を作成し、2つの関数呼び出しの間の短いタグを有効にします。それらの関数呼び出しの間で、使用可能にされる唯一の変数は、最初の関数呼び出しに渡されたものです(抽出を使用した連想配列として)。これにより、php自体(フレームワークなしのフレームワーク)でのテンプレート開発が容易になります。 no-framework PHP MVCフレームワーク

全体的に見て、多くのphpフレームワークには共通の方法で簡単にphpに統合できる特定の類似点があると思います。

しかし、whoami :)

0
immeëmosol
  1. 不変値オブジェクト
  2. 匿名クラスおよび/またはオブジェクトとしてのクラス
  3. 文字列データ型に相当する組み込みオブジェクト(前述)
  4. 注釈またはPythonのようなデコレータ
  5. Scalaのようなシングルトンオブジェクト
  6. 例外としてのデフォルトエラー(前述)
  7. UTF8サポート
  8. グローバルなどの削除
  9. 統一されたアクセスの原則-オブジェクトメソッドを呼び出してプロパティを操作する1つの方法(Scalaを参照)
0
sokzzuka