1

Ruby/Javascript などの言語では、オブジェクト演算子を何にでも適用できます。すなわち、

var string = "Pancakes";
alert(string.length);
// 8

すべてがオブジェクトの場合、これは何と呼ばれますか? 自分で何かをハックする代わりに、PHP をこのように動作させることができるものはありますか? これは現在、PHP コミュニティで要求されているものですか?

する能力はecho (new String("Hello"))->length()素晴らしいでしょう、または"Hello"->length(); 私でさえ落ち着くでしょう:

$var = "Hello";
echo $var->length;
4

4 に答える 4

1

それはオブジェクト指向プログラミングと呼ばれます。PHP は OOP をサポートしていますが、多くの言語は引数を受け取るフラットな関数として実装されています。

それらを操作したい場合は、独自のオブジェクトを定義する必要があります。そうしないと、strlen()などの組み込み型のような関数を使用する必要がありますString

于 2013-02-15T04:10:17.317 に答える
1

Java プログラマーは、プリミティブ値でメソッドを呼び出す機能に対してオートボクシングという用語を使用します。JavaScript にもこの機能があり、一時的なラッパー オブジェクトを作成することで機能します。Rubyについてはわかりません。

PHPではそれは不可能です。主に のようなメソッドを持つクラスnew String("Hello")->length()がないためです。自分で作成することもできますが、それだけの価値はありますか? また、このハックに興味があるかもしれません。Stringlength

于 2013-02-15T04:22:13.520 に答える
0

オブジェクト指向 (OO) は、「事後」に PHP に追加されたものです。OO が実装される前は、すべて関数を使用して行われていました (他の多くの C ライクなプログラミング言語と同様)。

PHP に関して言えば、文字列、整数、ブール値などは単なるデータです。それらはプリミティブ型であり、何もできません。これらは、メモリに格納されている名前付きの値にすぎません。これが、 などの関数を使用する必要がある理由ですstrlen($str)。関数は value で動作します

Ruby や Javascript などの言語では、文字列などのほとんどのデータ型は、実際には、実際にはオブジェクト (場合によっては、ちょっとしたオブジェクト) です。これらには、 などのさまざまなプロパティ.lengthと などのメソッドが含まれています.indexOf()。このようなデータ型の別の言葉は、複合型(複数のものから構成される) です。

したがって、PHP では、文字列の長さを把握するために記述するのが普通であると言えます。strlen($str)同様に、Javascript や Ruby では と書くのが普通str.lengthです。

PHP でクラスを作成することは可能ですStringが、それはちょっと的外れです。それは 10 まで数えることを学ぶようなものですが、それは 7 進法で行うように主張します。それはあまり実用的ではなく、人々はあなたが狂っていると思うでしょう。

于 2013-02-15T04:43:16.517 に答える
0

彼らはこれをオブジェクト指向プログラミングと呼んでいます。PHP の新しいバージョンは OO です。参照していることを達成するためのメソッドを持つクラスを作成できます。

于 2013-02-15T04:11:58.387 に答える