2012-01-13 8 views
2

私はObjective-CでCocoaフレームワークの機能のいくつかを実装するPHP用のクラスライブラリを作成しています。私はPHPで、このための最もエレガントな同等を思い付くしようとしているObjective-Cの@ "string"に相当するPHP

NSString *string = @"Hello World!"; 

のObjective-CはNSStringオブジェクトを作成するための便利な速記を持っています。私が行ってきた瞬間

$string = a("Hello World!"); 

a()は、適切なオブジェクトを作成する関数です。

誰かがより洗練された構文を提案できますか?
明らかに有効なPHPコードでなければなりません。

+2

私は '$のA = "こんにちは"、あなたの質問を理解していない;'すでに文字列を作成します。 – Maerlyn

+1

これは標準のPHP文字列です。私が話しているのは、実際には、文字列を表すオブジェクトです。これは、CocoaのNSStringクラスに似ています。 a()関数の動作を確認するには、http://pastebin.com/bippXMfdを見てください。 –

+0

これは完全に有効な質問です。彼は、通常の文字列よりも多くの機能とメソッドを持つカスタムクラスを持ち、オブジェクト指向です。 PHPはオブジェクト指向プログラミングにとって最良の選択ではありませんが、問題は理にかなっており、構文に対する懸念は有効です。私はあまりにも広範にPHPを使用していないが、これは基本的に関数を実装する唯一の方法であるため、これを実装する他の方法はないと思います。 – Greg

答えて

2

適切なイディオムはの線に沿って何かのようになります。あなたは、これが最善の方法で、より簡潔な何かを思い付くことができるかもしれませんが

$string = new NSString("Hello, World!"); 

。明快さと標準的な言語慣習に従うために、いくつかの余分な文字がそれに値する。

編集:

あなたのコメントに基づいて、私はあなたが次のことを行うことができますので、NSの名前空間を作成し、その名前空間に任意の単一文字の機能を追加することをお勧めします:

$string = ns\s("Hello, World!"); 

にあなたは可能性がありグローバル名前空間を汚染したりPHPのイディオムを壊さずに、NSNumberなどに対しても同じことをします。 Core Foundationのは、Appleでは

+0

これは事実ですが、私が書いているライブラリはこれをサポートしています。 NSStringオブジェクトを作成するその方法はもう少し手間がかかりますので、Objective-Cには短縮バージョンがあります。NSString * string = @ "Hello、World!"; - これはまったく同じことを行い、かなり便利なので、私はそれに近似するいくつかのPHP構文を考案しようとしています。標準の側面では、この構文はObjective-Cの標準とみなされています。それが私が模倣しているものなので、間違いなく模倣するのは良いことです。 :-) –

+0

名前空間のアイデアは興味深いです。私はそのことを考えます。ありがとう。 –

1

CFSTR("constant string");を使用するので、アプローチのようなもののための先例があります...