
関数の挙動を確認したいとき、対話型で実行できると便利だと思うのですが、そのようなツールはないでしょうか?あるいは、みなさんはどうやっていますか?
今のところ、echo '<?php echo str_replace("A","","ABC");?>' | php -q のようにしています。こういう単純なケースは、面倒なだけでまだ良いのですが、確認した値を使って次の動作をしたいときなど、どうしようもありません。
Ruby言語での対話型処理の例:
$ irb
irb(main):001:0> f=File.open('sample.txt','r')
=> #<File:sample.txt>
irb(main):002:0> f.gets
=> "line 1 of file\n"
irb(main):003:0>
No.4ベストアンサー
- 回答日時:
>少なくともphpで全体を書くか、あるいはそれでも無理か・・・
>phpソースを使ってphp本体と別のメインルーチンを作らないといけないのか・・・
変数などのバッファはosの方で吸収してあげるしかないかもしれませんね。
phpコマンドで動かす以上はプロセスを一度区切らねばなりませんし・・
動作をどこかで引っ掛ければ出来ないことも無いかもしれませんが、
phpにそんな機能があったかというとなかったような気もします。^^;
メインプロセスを寝かせておいて別から引っ掛けて~とすれば出来ないことも無い気がしますが、やはりそういうツールは聞いたことないです。
ここは作るしか。(という無責任発言
・・・使ったことないだけかもしれませんが^^;
>質問に書いたとおり、書いたプログラムとテストというよりは、
>山ほどある関数の仕様の確認や、「この処理は、こういう方針で書けるのか」
>の裏取りを想定しています。
当方の場合はあまり使わない関数などに対してはphpのマニュアルを毎回読みますね。
strpos()とかmktime()とかin_array()とかよく引数の順番を忘れます^^;
「マニュアルに書いてあることが常に正」という前提の下であれば
裏取りは「実際に流す」より「PHPの仕様を確認する」というのが肝要かと思いますよ。
どうしても不安であればphpを構成する生コードを確認すればよいです。
確認方法としては環境によりますが、単体テストより前の製作段階でのテストは皆さんが言うとおりhttpを介して確認することが多いです。
バッチなどphpパーサが別のシステムでも、テスト用のルーチンをその場で即席で組んだりしますね。
実はそれらのゴミコード郡が結合テスト時に大活躍するのですが、それはノウハウの別の話ということで。
>初めての関数を使うときに、リファレンスを読んでの自分の理解が正しいかどうかって、
>実験して確かめたりはしないのでしょうか?
リファレンスを読むってなんだろーうと思いましたがPHP機能のリファレンスとは別物ですな^^;
当方はもうお脳が駄目ですねorz
ある程度の力を超えると「実験」をするということ自体しなくなる気がします。
関数を纏めて作ってテストして、駄目だったら「アー」と唸る。orz
でも大抵は凡ミスなので一瞬で不具合は直る。
そうした方が早いというのを皆言わずとも理解している感があります。
アドバイスありがとうございます。
ご推察の通り、「リファレンス」=「リファレンスマニュアル」です。すいません。
phpさわるのは年に数回くらいなので、基本構文は覚えていても、関数はどんどん忘れます(覚えるつもりもないですけど)。
>「実際に流す」より「PHPの仕様を確認する」というのが肝要かと思いますよ。
すべてのケースについてのサンプルコードが書いてある訳じゃないので、実験したいケースはあります。ちょっといま例は思い出せませんが。
結局、対話型実行環境はメジャーな範囲では存在しないと言うことでしょうかね。
No.3
- 回答日時:
自分で作りましょう・・・と言うのもアレですかね。
当方はそういうツールは聞いたことがないです。
// rubyは変なツールがあるんですね・・・
cli限定であれば普通にshなどを書けば良いかと。
使ってるシステムによって書きかたは変わりますが・・・
phpが吐いた変数の扱いや見栄えの問題など工夫の余地はありますが、
基本は以下の感じでしょう。
#!/usr/bin/sh
echo "php> "
read com
while [ "$com" != "exit" ]
do
eval $com | php -q
echo "php> "
read com
done
もしかしたら誰かが既に作っているかもしれませんが、
当方はこういう作り方を行ったことがないし これからもないので知りません。
// 文法テストなら-lで事足りるし、単体テストするのに一行ごと検査しつつやらねばならないほど仕様策定を甘くしないし・・・
すみません。ありがとうございます。
一行完結のケースについては、シェル関数で、
pp() { echo "<?php echo $*;?>" | php -q; echo; }
などと定義しています。
ただ、「確認した値を使って次の動作をしたいときなど」を考えると、少なくともphpで全体を書くか、あるいはそれでも無理か・・・phpソースを使ってphp本体と別のメインルーチンを作らないといけないのか・・・というところだと思います。
特殊なニーズとも思えないので、すでにあるかなと思ったのですが。
無いんですかねぇ。
>// 文法テストなら-lで事足りるし、単体テストするのに一行ごと検査しつつやらねばならないほど仕様策定を甘くしないし・・・
質問に書いたとおり、書いたプログラムとテストというよりは、山ほどある関数の仕様の確認や、「この処理は、こういう方針で書けるのか」の裏取りを想定しています。
初めての関数を使うときに、リファレンスを読んでの自分の理解が正しいかどうかって、実験して確かめたりはしないのでしょうか?
No.1
- 回答日時:
httpサーバーとphpがすでに入っているという前提ですよね?
エディタで書いて、http経由で接続すればよいのでは?
そのうち欲がでてくれば統合環境まで視野にいれられると思います
この回答への補足
>エディタで書いて、http経由で接続すればよいのでは?
ファイルに書く方法だと、php -q < file でいいので、ことさらhttpサーバー経由にする理由がないです。
現状では、「確認した値を使って次の動作をしたいときなど」は、そのようにファイルに順次、次の処理を書き足しながら、必要なところにecho等を入れたりして繰り返し実行して対応していますが、何とも面倒。
>そのうち欲がでてくれば統合環境まで視野にいれられると思います
これが知りたいです。あまり大げさでない物。WindowsでもLinuxでもいいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- オープンソース stable diffusionのインストールがうまくいきません。 1 2023/06/20 13:09
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP PHP MySql ページング 2 2022/09/20 06:38
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*.php、*.php3、*.phtmlの違い
-
mb_convert_encodingについて
-
PHPファイルが表示されない
-
<A href ~ と一緒に値を渡すには
-
【file_exists】ファイルが存在...
-
ob_end_clean と ob_clean の違...
-
Illustratorで文字と画像を流し...
-
PHPの拡張子を見せない方法
-
phpでのログアウトについて
-
VBSの「MsgBox」について
-
findfirst("*",&ffblk,FA_DIREC...
-
<ASP.NET+C#+MSDE> JPEG画像の...
-
PHP session_destroyとsession...
-
FTPコマンドでディレクトリごと...
-
タイマー機能を使って指定時間...
-
拡張子php画像をjpg画像等に変...
-
エンコーディングについて
-
phpの処理中に画面表示ををする...
-
'_'(アンダースコア)の使い方...
-
httpdのプロセスが自動で消えな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*.php、*.php3、*.phtmlの違い
-
.htaccessにphp_valueが使用できな
-
フォームで戻った際に入力済み...
-
phpの中でphpを書けないか
-
PHPファイルが表示されない
-
PHPINFOが見えない
-
libphp5.so がないと?
-
PHP PDOライブラリが読み込まれ...
-
<A href ~ と一緒に値を渡すには
-
phpのextension_dirを複数指定...
-
iframeで読み込んだ別のphpファ...
-
splitのREG_EMPTYというエラー
-
PHPからMSSQLへの接続結果の文...
-
さくらインターネットでメール...
-
基礎からのPHPという学習本...
-
ここ以外のお助けサイト
-
phpからlinuxコマンドを実行したい
-
require_once()でファイルが読...
-
phpからoutlook起動
-
複数のファイルで同じ定数を定...
おすすめ情報