【PHP】質問スレッドpart24【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/01 04:09:15ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0546nobodyさん
04/11/12 11:25:07ID:8aG2jjUM回答ありがとう。
かなり衝撃的
0547542
04/11/12 11:30:33ID:???なるほど。
コンストラクタ呼び出しの引数と、コンストラクタ内のメンバ変数の代入式の
両方を参照にするというのは思いつきませんでした。
ありがとうございました。
0548nobodyさん
04/11/12 11:42:49ID:???0549nobodyさん
04/11/12 11:52:36ID:L9eWiqBvinclude() や file() で読み込むHTMLテンプレートの中に $addr などの変数を
書いておいて、自動でパースしてくれることを期待していたのですが、そのまま
$addr と表示されてしまいます。
これはPerlでも同じだったのですが、$bar = preg_replace('/\$addr/', $addr, $bar);
とでもやる以外にスマートな手はないものでしょうか。
0552nobodyさん
04/11/12 15:10:38ID:/lHAFZLN文法等の基本的なところは大体理解したのですが、
それに加えて最低でも押さえておいた方がよいことは
何でしょうか?
(PEAR、Smarty等いろいろありますが...)
0554nobodyさん
04/11/12 15:25:00ID:/lHAFZLN教育機関の講師が使用する、情報閲覧システムのようです。
構成は↓のようなものが想定されます。
Windows + Apache + PHP + DB(Oracle or DB2 or ???)
0555nobodyさん
04/11/12 16:06:27ID:???ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html
あとこういうことはくだ質行ってくれ
0557nobodyさん
04/11/12 16:09:34ID:/lHAFZLN失礼しました。
0558nobodyさん
04/11/12 17:42:30ID:???やはりPHPに来たかw
0559nobodyさん
04/11/12 19:09:46ID:???JavaScript との連携で、JavaScript が location.hash を PHP に渡せば出来る。
0560nobodyさん
04/11/12 19:20:32ID:???0562nobodyさん
04/11/12 19:40:11ID:???他にも、JavaScriptで動的に追加した<select>の選択項目を選択された項目とは別に取得するにはどういうPHPのコードを書いたらいいですか?みたいなのもあったりするし。
0563nobodyさん
04/11/12 20:55:00ID:???0564nobodyさん
04/11/12 21:04:28ID:fQRp2mKbWarning: mb_send_mail(): Could not execute mail delivery program
'/usr/sbin/sendmail -t -i ' in
というエラーがでたのですがsendmailが原因かPHPが原因かどちらなのでしょうか?
また、どうすれば直るのでしょうか?
0566nobodyさん
04/11/12 22:01:20ID:???sendmailをpopenできなかった時にそのwarningが出る。
原因つーか負荷を掛けすぎたんでsendmailがゴネてるってことだな。
鯖の管理者に相談するとよい。つーか管理者から苦情くるだろうから
今のうちに言い訳を考えておくとよい。
0568nobodyさん
04/11/13 00:27:39ID:???0570nobodyさん
04/11/13 01:44:24ID:???そして、trustudio を入れました。新規作成で PHP Project を作成できるようになりましたが、
既存のSimple Project を PHP Project に変換する方法が分かりません。
新しく PHP Project を作成してファイルを移動するしか方法はないのでしょうか?
0571nobodyさん
04/11/13 02:04:19ID:Aaqq6gsUみたいに"を気にしなくても使える(エスケープする必要の無い)
記述方法ありますか?
0572nobodyさん
04/11/13 02:47:39ID:???0575nobodyさん
04/11/13 12:08:21ID:Yc7DSHDt¥nつける意味がわからん・・・改行がなんで二つもいるんだ。。
手抜きしすぎの参考書かうとだめだな・・・
0576nobodyさん
04/11/13 12:11:46ID:???0577nobodyさん
04/11/13 12:13:58ID:Yc7DSHDt改行しないぞ、<br>だけなら改行するけど
0580nobodyさん
04/11/13 12:31:52ID:???0582nobodyさん
04/11/13 13:17:11ID:???独学でやってきたけど、ずーーっとecho使ってました。
そもそも使い方が違うのですか?
0583nobodyさん
04/11/13 13:17:57ID:???0584nobodyさん
04/11/13 13:31:11ID:???0585nobodyさん
04/11/13 13:32:38ID:???かなりワロタ
$a = print('A');
$a = echo('A');
前者は普通に動くけど、後者はエラー。
print 'A','B';
echo 'A','B';
後者は普通に動くけど、前者はエラー。
<?='A'?>
echoには省略形もある。
# これはまた別と考えるべきかもしれないけど
違いはこれぐらいだよ。同じと思うべきかと。
0590nobodyさん
04/11/13 16:50:56ID:???0591nobodyさん
04/11/13 17:29:26ID:6u/jhtaTもっと簡単で、やりたい事を直感的にプラグラミングできる言語が
開発されたらいいのになぁ。
0592nobodyさん
04/11/13 17:34:31ID:???簡単だと汎用性に乏しくなるし。。。
0593nobodyさん
04/11/13 17:44:13ID:???俺の悩みはPHPのマニュアル内の検索の仕方がわからない
右上の検索欄は「関数名」しか対応してないみたいだし
0596nobodyさん
04/11/13 18:57:25ID:???Perlで
$str =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
と置換するのと同じ事をPHPでやるにはどうしたらよいのでしょうか?
部分的に置換などの方法は分かるのですが、上記のように
:はA
;はB
<はC
というように対応させたいのですが、PHPにそのような関数が見つからずに困っています。
どなたかご存じないでしょうか?
トリップ変換の時に使うところね。strtr関数がそのまま使える。
http://f9.aaa.livedoor.jp/~fcafe/fbox/lib/trip.phps
# 懲りずに自分のソースを晒してみる
0601nobodyさん
04/11/13 20:37:07ID:???スピードで言えばただ単純に出力するなら作りの問題で、若干echoの方が早い。
(作りに問題があるからではない。要するに別名ではなく、別物だから)
あくまでも若干ね。
使い方については>>587
0602nobodyさん
04/11/13 21:20:10ID:???Simple Projectを削除(コンテンツは削除しないで)
New Projectで、PHPプロジェクトを選んで、そのSimple Projectと同じ名前で
プロジェクト作成、ワーニング出るが、それをよく読んで実行。
きっちり検証してないから、どうなってもしらんぞ。
CVSに放り込むなり、バックアップ取るなりしろよ。
0604570
04/11/13 21:56:56ID:???親切にどうもありがとう!
『新規でPHP Project を作って、コンテンツを”コピー”』で、できました。
0605596
04/11/13 22:12:47ID:???ソースまでいただけるとは思いませんでした。
$salt = ereg_replace("[^\.-z]", ".", $salt);
この部分まではなんとか関数調べて出来たんですが
$salt = strtr($salt, ":;<=>?@[\\]^_`", "ABCDEFGabcdef");
この関数まで見つけられませんでした。^^;
とりあえず実装してみて、キャップ機能は自分で移植できそうなのでがんばります。
ほんとにありがとうございました。
0606nobodyさん
04/11/14 00:53:26ID:???PHP4+Apacheの環境です。
私はウェブサイトのトップページをphp(index.php)で作っているのですが、
アクセスする度にMYSQLに接続しDBからデータを
引っ張ってきている為、トップページが少し重くなっています。
それを解消する為にindex.phpを実行した結果をindex.htmlとして
吐き出して、訪問者にはindex.htmlという静的なページを見てもらえれば
サイトが軽くなると考えました。
自分でindex.phpにアクセスして
そのページのソースをコピーしてindex.htmlとして
保存すれば簡単なのですが、これを自動で出来る方法は
ありませんか?
一定時間毎にindex.phpからindex.htmlを吐き出す方法はないものでしょうか。
0607nobodyさん
04/11/14 00:58:11ID:???しかし、それが気になるということは、ものすごいアクセス数なんだろうな。
0608nobodyさん
04/11/14 01:05:38ID:???0610nobodyさん
04/11/14 01:24:59ID:???0611nobodyさん
04/11/14 01:47:19ID:ojuplhFmcronの利用をしたくないか、cronの利用ができない場合は、
Smartyテンプレートを利用することをおすすめします。
Smartyのキャッシュ機能を利用することで、
例えば、キャッシュが有効な間はDBへのアクセスなどをスキップさせる
事ができます。
require_once("Smarty.class.php");
$smarty =& new Smarty();
$smarty->template_dir = "./templates/";
$smarty->compile_dir = "./templates_c/";
$smarty->caching = 2;
$smarty->compile_check = true;
$smarty->cache_lifetime = 60; // キャッシュの有効時間を1分に設定
$template = "index.tpl";
if(!$smarty->is_cached($template)) {
// このへんにDBへのアクセスとか
// $smarty->assign("変数名", "値");を行う
// キャッシュの有効期限が切れるまでは、ここは実行されない
}
// 画面表示
$smarty->displary($template);
※適当に書いたのでこのままでは動かないかもしれないけど、
雰囲気的にはこんな感じ。
0612nobodyさん
04/11/14 01:51:34ID:???0613nobodyさん
04/11/14 02:05:55ID:???【やりたい事】
以下のファイルが存在します。
main.php
sub/sub.php
util/util.php
config/config.php
main.phpとsub.phpはそれぞれ、util.phpを使用します。
util.phpは、config.phpを使用します。
【やってみた事】
main,subそれぞれで、requireを使ってutil.phpを呼びました。(相対パス)
util.phpでconfig.phpを呼びました。(相対パス)
【結果と疑問点】
subは正常に動作しました。
mainは、utilでのconfigの呼び出しに失敗しました。
requireで読み込んだutilが、mainやsubの場所で動いているから
こうなるんだろうという事までは理解したのですが、
この仕組みを意図したとおりに動かすにはどうすれば良いでしょう?
reauireを使うのがそもそも誤りかと思ったのですが、
手元のリファレンスには適切な関数が見当たりません…。
ちなみに当方Java経験者(初心者だけど)で、
requireをimportの乗りで使ってました…(汗)
0614nobodyさん
04/11/14 02:08:10ID:???0615613
04/11/14 02:30:12ID:???0616613
04/11/14 02:46:16ID:???PHPマニュアルより
読み込むファイルはまずカレントのワーキングディレクトリからの
相対パスとしてinclude_path で探され、それから、カレントのスクリプトの
ディレクトリからの相対パスとしてinclude_path で探されます。
…とあるのですが、これなら例に挙げたものも動きそうなんですが…??
もう少し悩んでみます。
0617nobodyさん
04/11/14 03:01:54ID:???0618613
04/11/14 03:13:19ID:vN4rnj6xもちろん試しました。
…下げてた。ごめんなさい。
0619nobodyさん
04/11/14 04:30:54ID:???呼び出し元からのパスでrequireなりinclude。
ていうかさ、呼び出し先でまたrequireとかあったら、メンテナンス性も糞もないと思うけど。
何のためにソース分けてるのか意味分からん。
main.php
require('util/util.php');
require('config/config.php');
sub/sub.php
require('../util/util.php');
require('../config/config.php');
ソースの見易さやメンテナンス性からいっても、requireはソースの先頭でまとめて宣言すれば?
メモリ節約とかでの例外はあるけどね。
あとincludeとrequireの違いは、↓読め
http://jp2.php.net/manual/ja/function.include.php
今回のケースではrequireの方が適切でしょ。
chdir関数でカレントディレクトリを統一してみ。
0622nobodyさん
04/11/14 11:34:10ID:TN0m6TVj正規表現なんですけど、|\\-|\\.の部分がよくわかりません
|はORのことですよね\\は¥を含むってことですか?
0623nobodyさん
04/11/14 11:49:27ID:???\\. → \. → .
0625nobodyさん
04/11/14 12:16:10ID:TN0m6TVj\\て¥のあとの文字を表示するんではないんですか?
PHPはじめてなもんですみません
¥^なら^とかって本にかいてたんで
0627613
04/11/14 13:39:18ID:???いや…メンテナンス性とか解り易さを求めているからソース分けしている訳で。
mainやsubからutil使う時、utilの中身なんて意識したくないでしょ。隠蔽っていうの?
…と思ってたのですが、PHPではそういう考え方はしないみたいですね。
諦めて別の方法を考えます。皆さんありがとうございました。
0628613
04/11/14 13:40:40ID:???お邪魔しました。
0629nobodyさん
04/11/14 13:48:02ID:???C言語でもincludeの元にincludeとか当たり前だし。
階層化してるんだったらそれでいいと思う
0630nobodyさん
04/11/14 14:08:21ID:???0631620
04/11/14 14:13:53ID:???だからよぅ…
あなたみたいな設計ももちろんする場合があるし、
そんな事以前に " require_once() "つうのがあるって言ってるじゃん(涙
0633nobodyさん
04/11/14 14:56:51ID:???他言語と同じ平凡なパス管理なんだけど。
カレントディレクトリを設定してるのはOSね。
よくわからんのなら__file__定数を使って解決つーのが手っ取り早い。
includeんとこにも載ってるが。
あと一般論として野良ライブラリはブラックボックス化するとメンテに
手間かかるよ。
0634nobodyさん
04/11/14 14:59:41ID:???ファイルの依存関係をクライアントプログラムから隠すつーことに限ってね。
0635nobodyさん
04/11/14 15:22:31ID:???纏めるとこういうことか。
[前提条件、つーか仕様]
include,require等は、最初に起動したスクリプトからの
相対パスで指定しなければならない
[実際の利用方法]
ネストしてinclude,requireする場合は
・_FILE_を使って上記の相対パスに変換する。
・chdir()を使う。
・require_onceを使う。
require_onceを言ってる人は、
・それぞれのファイルの中で そのファイルからの相対パスをrequire_onceすりゃいい。
・ネストが1つ上のファイルでもrequire_onceするのを忘れるな。
・その結果、一番最初に起動するスクリプトの指定が有効になりうまく動く。
ってことでいいのかな。
0636nobodyさん
04/11/14 15:54:38ID:???require_onceしとけば十分だろ。ディレクトリ固定なら__autoloadを使う手もあるが、
どのみちディレクトリ構造指向ならimport文と同じことだからネストする意味が
全く無い気もするな。インクルード用のコマンダこさえるのに比べれば何ぼかマシ
かも知れんが。手段はset_include_path使うとか、Cみたいにディレクトリをハード
コーディングしないよう定数作るとか、正規のライブラリを使うとかいろいろあるだろ
うから好きにやればいいんだが、よほど多くのファイルが構造化されていない限り
インターフェイスとなるカレントスクリプトからライブラリを操作するという設計に
変更するべきだろうな。
0638nobodyさん
04/11/14 16:16:44ID:/FGTdaOrhtttpsのものは何か特別なことをしなくてはいけないのでしょうか?
それとも出来ないのでしょうか?
0639nobodyさん
04/11/14 16:17:44ID:???0640nobodyさん
04/11/14 16:19:40ID:???/ || ̄ ̄|| <⌒ヽ )) < >>636 はてさて、
| ||__|| < 丿 | どこを縦に読みゃいいんだ?
| ̄ ̄\三⊂/ ̄ ̄ ̄/ \___________
| | ( ./ /
0641nobodyさん
04/11/14 16:20:21ID:???何が楽しいのかね。
0643nobodyさん
04/11/14 16:21:30ID:???0644nobodyさん
04/11/14 16:22:35ID:Do7sGTWF■ このスレッドは過去ログ倉庫に格納されています