PHPに統一された関数名を与える方法
開いていただきありがとうございます。
PHPユーザの間でもよく言われていることだと伺っていますが、PHPの関数名にはやや疑問符がつくようなものや統一性に欠けたものが多く見られます。
多くの方は「これはそういうものなのだ」と割り切って利用されているかと思いますが、自分の場合は神経質な性格が災いして、それを理由にPHPの利用に消極的で在り続けました。
さすがにこれは勿体ないと思い、自身で関数名にエイリアスを与えたライブラリでも作成しようかと思っていたのですが、既にそのようなものが存在すると伝え聞きました。ただ「PHP5でのオブジェクト指向導入に合わせて用意されたもので、自分はオブジェクト指向に興味がないから」と具体的なことは教えてもらえず仕舞いでした。
個人的には是非とも利用を検討したいのですが、PHPを敬遠していたことが災いしてコミュニティを覗っても詳細がようとして分かりません。もしご存じの方がいらっしゃれば、お手数ですが詳細をご教示いただければと存じます。
No.3ベストアンサー
- 回答日時:
>> 自身で関数名にエイリアスを与えたライブラリでも作成しようかと
>> 思っていたのですが、既にそのようなものが存在すると伝え聞きました。
他人が作成したエイリアス名では、結局しっくりするか分からないでしょうから
自身で関数名をカスタマイズする方法を示します。
phpでは、組み込み関数も含めて名前をオーバーライドする機能が用意されています
runkitを導入すれば、runkit_function_rename で関数名を変更できます
php.ini で runkit.internal_override を有効にするのをお忘れなく!
参考URL http://www.php.net/manual/ja/book.runkit.php
本当にいろいろなものが用意されていますね。
用意されているものが豊富すぎて目的のものが見つからないというのもなんともですが(苦笑)。
何か調べるにあたって念頭においておくといいことなどありますでしょうか?
マニュアルを読み込んで動作等確認させていただこうと思いますが、
恐らく時間がかかってしまうので先にお礼だけ述べさせていただきます。
個人的にはどこまでも趣味に走っていいのならばOO言語としての体をなしたいのですが、
現実的に考えると少々欲張りすぎでしょうね。
No.5
- 回答日時:
ちなみに、ご質問にあった、伝え聞いたというライブラリですが、
http://openpear.org/package/PHP_Object
これですかね。なんか近い感じはします。
他人が見たときの可読性などを気にしないのであれば、このようなものを使ってみるのもいいのではないでしょうか。
また、PHPを使うと割かし簡単に処理が出来る、ということと、利用者が多い為に情報が豊富にある、ということを除けば、特段他のスクリプト言語、Perl/Ruby/PythonとかでもWebアプリは構築できますし、
Webだと、Javaもかなりシェアがあります。MSのASPとかも。
さらに、CGIを使えば標準入出力が可能な言語であれば何でも構築出来てしまうので、
趣味で作成されるのであれば他の言語ものぞいてみてもいいかもしれないです。(当然既にその道は通過してそうですが。)
既に世間でも言語仕様などについても不満の声も上がっていたりするので、質問者さんのように潔癖であったりすると、関数名だけでなくいかようにもしがたい言語仕様のほうで、弊害が出そうで心配になりました。
遅くなってすみません。情報ありがとうございます。
確認してみましたがメソッドチェーンを可能にするのがメインということで、
残念ながら今回提示いただいたのは伝え聞いたものとはちょっと違うような気がします。
現在悪さをして逃亡中(苦笑)の情報元はオブジェクト指向とか理解する気もないPGだったので、
何らかの誤解があったのだとしてももうちょっと違うものになると思いますしね。
理想としては "Hello World!".length() などと書ければ最高ですが、
PHPはオブジェクト指向言語として設計されたわけではないので、さすがにそれは欲張りすぎですね。
メソッドチェーンも好きですが、このサンプルは本質を見失っているような気も^^;
普段は好んでRubyを利用するのですが、PHPはやはり無視しかねる存在ですので。
確かに言語仕様のレベルでいろいろと突っ込みたい部分はあるのですが、
それはどの言語にもありますし、どうしようもないという諦観の念で抑えられています。
いつかオレ言語を作ってやろうとは思いますが、YACC嫌いなので道は遠いというかだるそうです。
<愚痴>せめて学術書は肝心な部分をYACCに投げないでほしい。</愚痴>
本当にこの強迫性、SE/PGにとっては死病です。ストレス倍増です。
幸いわがままが効く立場なので今のところは大事には至っていませんが、時間の問題かもしれません。
PHP6で互換性を切り捨てた大規模刷新、なんて望めませんしね……。
ご心配まで本当にありがとうございます。皆様もどうぞ体調にはお気をつけください。
No.4
- 回答日時:
単純に名前を治すっていうことであれば、
function html_entity_decode($string, $quote_style=ENT_COMPAT, $charset="ISO-8859-1", $double_encode=true){
return htmlentities($string, $quote_style, $charset, $double_encode);
}
とラップしてやればよいのではないかと。
HTMLのビューでよく使う「htmlspecialchars」もアンダーバーで区切ってみたところで、恐ろしく長いので、ラップして「h」という関数名にしてしまうこともよくやります。
ただ、PHPが流行った理由の一つに、公式マニュアルが親切、というのがあります。
http://jp.php.net/{関数名}
としてアクセスしてやれば標準関数であればすぐに解説が見れます。
例)
http://jp.php.net/htmlentities
ですので、後でプログラムを見なおしたときには標準関数で作成したものであったほうが、分かりやすいのではないかなぁとは、思います。
回答ありがとうございます。
確かに標準から外れることは可読性からしたら痛いんですよね。
ですので広く利用されているものならばまだましかなと思ったんですが、
ここまで情報がないということはガセだったみたいで、いろいろ検討中です。
そのくらい我慢すればいいじゃんというのが普通の意見でしょうが、
ぶっちゃけちゃえば潔癖の度が過ぎて強迫性障害とかいうのを患っちゃいまして、
何かが気になり始めたら最後、最悪ソース全破棄どころかOS入れ替えちゃう勢いなので、
症状が緩和するまではトリガーを除くことに必死だったりしますw;
仕事の方はうまく折り合いつけてるんですけどね……
趣味でも組まなきゃ気が済まないようなジャンキーなのでたちが悪いです。
あとどうでも愚痴なんですが、
and, or, xor が使えるんだから機能的には無意味でも not くらい対応してくれてもいいよなあ。
No.2
- 回答日時:
PHP5でJavaScriptを模倣したライブラリがあるようです。
(使用経験はありません)J4P5: Javascript For PHP 5
http://j4p5.sourceforge.net/
PHP5上でJavascriptを動かす: J4P5:phpspot開発日誌
http://phpspot.org/blog/archives/2006/01/php5jav …
PHP5でJavascriptを動かす J4P5 - nazonoDiary
http://d.hatena.ne.jp/nazoking/20060321/1142880772
発想自体は良いと思いますが、「文法を知っている」程度の理解度から「J4P5」を習得するのはやや危険を伴うように思います。
JavaScriptライブラリでもありがちなのですが、ライブラリの使い方は覚えても、基礎的な知識が足りないためにとんでもない質問をする方がいらっしゃいます。
最終的にライブラリを使うとしても、まず、じっくりと基礎を固めてからの方がいいのではないでしょうか。
場合によってはライブラリにバグがあったのだが、どこに問題があるのかわからず…という事態も考えられます。
せめて、問題点を把握できる程度にはPHPを理解してから、ライブラリを使用した方が良いのではないかと…。
回答ありがとうございます。
純粋に面白そうな試みですがまだ途上と言った様子ですね。
クロージャの動作が不安定などというのは、技術的に難しいのですが惜しいところです。
また表現に誤解があったようですので訂正を入れさせていただきます。
PHPの「文法を知っている程度」というのは基礎の基礎しか知らないというよりも、
ライブラリなどの背景事情はPEAR程度も満足に理解できていない、
文法書に書かれていることしか知らないような頭でっかちという意味で解釈してください。
ライブラリを使いこなせるかどうかというところまで心配していただけるのはありがたいですが、
その点に関しましては心配をしていませんし、何かあっても自己責任のつもりです。
なら自分で調べろよと言われてしまいそうですが、それはしているのですが、
PHPのコミュニティが広すぎて五里霧中に近い状態と捕らえていただければ幸いです。
そのため、せめて足掛かりを与えてもらえればと思い質問させていただきました。
No.1
- 回答日時:
>自身で関数名にエイリアスを与えたライブラリでも作成しようか
なにをもって統一性に欠けるとおっしゃるっているのかわからないので何とも言えませんが
結局誰かがなんらかの統一性をもたしたとしても、自分に合わなければだめなんですよね?
であれば、ご自身でやる以外にないでしょう。
ただ、ご自身用にカスタマイズしたものは他人にとってはまた使いにくいものです。
グループで作業するならグループで決めごとをするか、デフォルトのものを使うかしか
ないでしょう。
回答ありがとうございます。
お返事遅くなってしまいすみません。
何をもって統一性があると看做すのかは難しい問題かもしれませんが、
個人的には他の主要な言語程度に違和感を覚えなければ問題ありません。
具体的にPHPの奈辺に違和感を覚えるのかといいますと、
htmlentities() ⇔ html_entity_decode()
例えばこのように対称関係にあるものなどが挙げられます。
名前に対して挙動がおかしいなどは議論の対象となるかもしれませんが、
対称関係にある関数の名前はやはり対称的であってもいいと思うのですよ。
もちろん当然どの言語でも何かしら思うことはありますし、
それが少しも許せないとなればマイ言語に引きこもるしか道はないのでしょうが、
PHPに違和を覚える声は、他言語と比べても格段に多い気がします。
幸いPHPでグループ作業をする予定はありませんが、
公式・準公式でそのような統一されたものがあるのなら、素直にそちらを利用したいです。
正直ライブラリの規模が大きすぎて自作は厳しいという面もありますしね。
PHPに関しては正直「文法を知っている」程度の理解度ですので、
何かしらヒントになりそうなものでも教えていただければ幸甚です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- 統計学 アンケート調査のデータ比較をする際の統計分析方法の選択に迷っています 5 2022/04/15 01:05
- その他(教育・科学・学問) 関数、写像について 1 2022/04/10 23:45
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- 哲学 説得力を修辞の巧みさまたは論理の強さの2つに分析するにはどうすると良いでしょうか? 0 2022/07/20 05:46
- 哲学 日本語の文法を考える 3 2022/06/23 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どのプログラミング言語で作ら...
-
Laravelなど、フレームワークを...
-
小学1年生の子です。塾に行かせ...
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
プログラムに書かれる"%"記号の...
-
Visual Studio Codeについて
-
C++ ってなんて読む?
-
C for Linuxでの設定ファイル読...
-
HOLONついて教えてください。
-
Pythonって何を意識した言語な...
-
COBOLで文字タイプを数字...
-
VBScriptで引数を省略したい場合
-
C言語とhtmlの違いを どな...
-
TO_CHARで小数点以下がある場合...
-
プログラミング言語「C#」の難...
-
アセンブリ名とは??
-
CSVデータの"(ダブルクォーテ...
-
ライン保護botについて プログ...
-
OS・アプリケーション・ユー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Laravelなど、フレームワークを...
-
PHPでLinux用のCライブラリを呼...
-
どのプログラミング言語で作ら...
-
html、css、JavaScript、PHP…違...
-
「楽天」で開発に使用している...
-
phpをある程度習得するまでの期間
-
PHPのオススメ開発環境は?
-
どんなプログラミング言語を使...
-
PHPがあればCGIは使わない
-
PHPでWindowsアプリを作成する...
-
C言語にて jpg ⇔ bmp 相互変換
-
WEBアプリケーションを作成する...
-
サーバーサイド言語とは?
-
PHPを覚えた方がいいですか?
-
いまから勉強するなら、どんなw...
-
webアンケートを作成するための...
-
PHPを習おうと思っているのです...
-
PHPとJSPは同じような位置付け
-
BBSを作るにあたって
-
C言語、C+、C++、C#の違い
おすすめ情報