[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/11 12:00 / Filesize : 340 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はここに書き込みやがれ 7



1 名前:デフォルトの名無しさん(ワッチョイ 1342-Xqtn) mailto:sage [2016/11/09(水) 11:03:26.15 ID:eAjeihOa0.net]

PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 5(実質6)
echo.2ch.net/test/read.cgi/tech/1462971286/

次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

802 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 09:57:07.81 ID:LFg06LIZ0.net]
>>790
抜いてばかりの童貞にinsertは無理だろ

803 名前:デフォルトの名無しさん (アウアウウー Sa07-VnDS) mailto:sage [2017/02/06(月) 19:16:02.72 ID:ozwc9aFfa.net]
>>792
誰がうまいこと言えと

804 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 19:50:18.02 ID:Qfr8LDq90.net]
データベーススレ死んでるのでここで

自分の「お気に入りの本」を無制限で登録できるシステムがあるとき、
そのお気に入りの本の順序もデータベースへ保存したいと考えています

どのようなテーブル構造にすればよいでしょうか?

805 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 19:53:11.14 ID:LFg06LIZ0.net]
>>794
順序って何さ?

806 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 19:56:54.25 ID:Qfr8LDq90.net]
>>795
1番目、2番目・・・などのユーザーが本を並び替えした順番のことです

これはただの順序であって、ランキング的な意味合いではありません

807 名前:デフォルトの名無しさん (ワッチョイ 034a-Sup+) mailto:sage [2017/02/06(月) 20:00:24.61 ID:LFg06LIZ0.net]
列1: 本のタイトル
列2: 順番
でいいんじゃないか?

808 名前:デフォルトの名無しさん (ワッチョイ 03d6-yene) mailto:sage [2017/02/06(月) 20:17:46.69 ID:Qfr8LDq90.net]
いい感じのパッケージありました

https://github.com/spatie/eloquent-sortable

809 名前:デフォルトの名無しさん (ワッチョイ d3d6-RMO+) mailto:sage [2017/02/06(月) 21:57:45.78 ID:c35vGYE60.net]
>>797
プライマリキーくらいつくれ、能無し

810 名前:デフォルトの名無しさん (ワッチョイ 7f17-pD/q) [2017/02/07(火) 00:04:49.40 ID:Mn/5HQ4m0.net]
>>780 ですが 一応できました
もっと効率のいい書き方、変数の使い方、抜き方、等ありましたら教えてください

pastebin.com/pHhnxtc7



811 名前:デフォルトの名無しさん (ワッチョイ 7f17-pD/q) [2017/02/07(火) 00:10:20.64 ID:Mn/5HQ4m0.net]
>>800
すいませんミスりました
30行目 39行目 $benkyoukaisibi とありますが
$nukikaisibi のまちがいでした

812 名前:757 (ワッチョイ b3c9-C7TH) [2017/02/08(水) 09:18:47.18 ID:FV7NOXvo0.net]
お礼が遅くなりました。なんとなく(?)例外処理がわかりそうな気がします。
あと一つ関連で教えていただきたいのですが
A.php で try{ B.php内の関数} catch($error){例外処理}
としているとき、
B.php の関数で、DB処理をしてトランザクション処理をするときは、
B.phpで処理の必要があると思うのですが、そのあと、改めて例外を投げて
A.phpで補足するのが定番なのでしょうか。

例えばB.php 内の慣習(A.phpから呼び出される)で
try{sql処理} catch($error){ロールバック処理;throw $error}
といった形ということです。

813 名前:802 (ワッチョイ b3c9-C7TH) [2017/02/08(水) 09:19:56.66 ID:FV7NOXvo0.net]
ごめんなさい。関数というのは、B.phpで作られるクラスのメンバ関数のことです。

814 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/08(水) 09:23:32.00 ID:+f0LmjaI0.net]
PDOのエラーモードを例外にしてんなら、
全部PDO関連の例外はPDOExceptionに集約されるでしょ。
そこでトランザクション中ならロールバックすればいいだけ。
php.net/manual/ja/pdo.intransaction.php

815 名前:デフォルトの名無しさん (ワッチョイ a3f8-0MWP) mailto:sage [2017/02/08(水) 09:40:39.44 ID:+f0LmjaI0.net]
try {
 $pdo = new PDO(〜);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 〜
 //実行
} catch (PDOException $e) {
 if ($pdo->inTransaction()) {
  $pdo->rollBack();
 }
}

もしくは

try {
 $pdo = new PDO(〜);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 〜
 try {
  //実行
 } catch (PDOException $e) {
  $pdo->rollBack();
 }
} catch (PDOException $e) {
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


816 名前:デフォルトの名無しさん (JP 0Hff-w8tn) mailto:sage [2017/02/08(水) 10:14:53.81 ID:WP/XTf2IH.net]
>>802
基本的に、データベースアクセスするメソッド内ではtransactionを開始しないこと(呼び出し側で処理する)。
なので、B内ではtry-catchは不要。
A内でcatchするのがrollbackの為だけなら、それも不要。commitしなければ自動ロールバックされるし。

データベースエラーのときだけログをごにょごにょしたいなら、exception handler内でexceptionのクラスを調べて、
PDOExceptionの場合にそうすればいい。

817 名前:757=802 (ワッチョイ 9bc9-Ev9t) [2017/02/09(木) 13:06:47.11 ID:90f1Xg3G0.net]
>>804,805,806
説明が下手でごめんなさい。ロールバックの仕方がわからないのではなくて、
呼び出し先(B.php)でロールバックされたことをA.phpで知って「登録されませんでした」と
いったメッセージをA.phpで送りたいんです。
>>806
A.phpでDB接続のロジックを書きたくないんです。接続せずにトランザクション開始ってできないですよね。
B.phpのクラスでDB関連のロジックをまとめて、A.phpでは結果だけ取得したいです。
結果というのは、正しい結果もあれば例外オブジェクトと思っています。
なので、A.phpでtry{b->function}catch($e){例外処理}としたいのですが、考え方が
おかしいでしょうか?A.phpがコントローラ、B.phpがロジックの場合、どのように処理するのが
定番なのでしょうか

818 名前:デフォルトの名無しさん (JP 0H0e-oA82) mailto:sage [2017/02/09(木) 13:45:35.85 ID:dfCX7ZDmH.net]
>>807
例えば、B.phpの立場と同じUserModel.phpを考えてみましょうか。

まず、class UserModel自身がデータベース接続を確立するのはこのましくありません。

なぜなら、ユーザの登録と同時に何かの登録をしたいとき、
$user = new UserModel();
$foo = new FooModel();
$user->add($user_data);
$foo->add($foo_data);
と書くと思いますが、トランザクションはこのコードの外側で操作する必要があります。

$conn = DBConnection::getConnection();
$conn->begin();
$user = new UserModel($conn);
$foo = new FooModel($conn);
$user->add($user_data);
$foo->add($foo_data);
$conn->commit();

このコードがコントローラに存在するなら、データベース接続はコントローラで行わなければならないということになります。

819 名前:デフォルトの名無しさん (JP 0H0e-oA82) mailto:sage [2017/02/09(木) 13:47:44.35 ID:dfCX7ZDmH.net]
それから、上でも書きましたが、エラー発生後他の処理をしないなら、exception handlerで全てのexceptionを処理するのが簡単です。

820 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/09(木) 18:57:33.26 ID:jEjnqqv00.net]
>>807
呼び出し先でエラーがあったらメッセージを出したいってこと?
自分だったら、global変数にエラーメッセージを入れて、それを出力するようにするかなぁ



821 名前:デフォルトの名無しさん (オッペケ Srf7-S/g0) mailto:sage [2017/02/09(木) 20:01:16.79 ID:rM/fQ6YVr.net]
おれ、いろんなサイトでB.phpでDB接続して、A.phpでも接続してるけど、特になんの問題もないよ
動けばいい、多少のロジックの無駄は気にすんな

822 名前:デフォルトの名無しさん (ワッチョイ 26c9-cGUq) [2017/02/09(木) 20:24:33.59 ID:3FO030YH0.net]
foreachで、途中からループを始めたいときはどうしたらいいの?
最初のn個飛ばすとか

823 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/09(木) 20:46:25.53 ID:m/rQHIL40.net]
欠陥コードだから構造見直し

824 名前:デフォルトの名無しさん (ワッチョイ 0f59-cGUq) mailto:sage [2017/02/09(木) 21:30:00.55 ID:PVymcmPW0.net]
>>808
B.phpはモデルじゃなくサービスレイヤみたいに読めるけど。

825 名前:デフォルトの名無しさん (ワッチョイ 126b-T9/6) [2017/02/09(木) 22:51:03.38 ID:Uf58p31N0.net]
オブジェクト指向プログラミングのお手本になるようなオープンなソースを教えてほしいです。
PHPのオブジェクト指向プログラミングの基礎を学んだのですが、今ひとつクラス設計がわかりません。
神クラスにならないようにするというのはわかったのですが、実体の無いものをクラス化する時、
例えばデータをファイルに書き込むという操作群があるとして、これをどういうクラスに入れればいいのかということです。
今までは適当に関数にまとめて呼び出していたのですが、これをOOPにするならどういう風に書けばいいのかわかりません。

私が読んだことのあるPHPプログラムは古いバージョン用に書かれたOOPとは無関係の掲示板スクリプトなどです。
出来ればPHPの標準関数・機能だけで完結しているものがあればありがたいです。

826 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/09(木) 23:01:22.62 ID:m/rQHIL40.net]
>>815
フレームワークとか覗いてみるといいかもね
https://github.com/laravel/framework

827 名前:デフォルトの名無しさん (ワッチョイ dfc1-CIv3) mailto:sage [2017/02/10(金) 00:11:57.81 ID:Vc9wXXK10.net]
>>807
だからBで例外投げてAでcatchすればいいんじゃねーの

828 名前:812 (ワッチョイ 26c9-cGUq) mailto:sage [2017/02/10(金) 10:32:44.34 ID:6P3lfBfG0.net]
どうしたらいいかな

829 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/10(金) 10:38:32.76 ID:8U0cA5Uo0.net]
forを使って下さい

830 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/10(金) 13:22:55.21 ID:iqUwwggS0.net]
>>812
$ary = array(1, 2, 3, 4, 5, 6);
print_r($ary);

echo "\n";

foreach ($ary as $k => $v) {
 if ($k < 3) { continue; }
 echo "{$k} => {$v}\n";
}

echo "\n";

$ary = array_slice($ary, 3);
foreach ($ary as $k => $v) {
 echo "{$k} => {$v}\n";
}

とか
forやwhile使ってもいいけど



831 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/10(金) 13:26:14.20 ID:iqUwwggS0.net]
>>815
Zend Frameworkのソースコードはお手本みたいな規約だしオススメ

832 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/10(金) 14:32:54.04 ID:lMP7OKhp0.net]
array pushの公式に

もし配列にひとつの要素を加えるために array_push() を使用するなら、 関数を呼ぶオーバーヘッドがないので、$array[] = を使用するほうがいいです。

って書いてあるけど、下みたいな書き方でもオーバーヘッド発生するのかな

foreach ($variable as $value) {
array_push($array, $value);
}

833 名前:デフォルトの名無しさん (ワッチョイ dfc1-S0So) mailto:sage [2017/02/10(金) 14:43:11.39 ID:Vc9wXXK10.net]
>>822
なんで発生しないと思うの?

834 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/10(金) 15:00:30.89 ID:RYh3fTnw0.net]
>>811
自分は気にするけどなぁww

DB関連のコードを全てB.phpでするようにして、A.php側ではDBを意識しないコードにしたいとかよくある。
あとでDBが変更になることもあるし
PDO使ってても、一部KVSに変更とかあると対応できないし(お願いしたことあるw)
DB一つでトランザクション完了してた時は楽でよかったwww

835 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/10(金) 16:22:22.39 ID:lMP7OKhp0.net]
>>823
関数に閉じ込めてる間はpushが稼働してると思ったから

836 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/10(金) 16:29:42.22 ID:RYh3fTnw0.net]
foreachは関数じゃなく、ループですが・・
オーバーヘッドがあるから、ループの中で使うのはおすすめしないと言うことなんだけどね。
ちなみに、array_mergeという関数があって
こちらを使えば・・ループの代わりに関数を使うことで・・という説明になるね

837 名前:デフォルトの名無しさん (オッペケ Srf7-S/g0) mailto:sage [2017/02/10(金) 16:35:15.11 ID:8f4rSBP3r.net]
どうせ誰が作ってもクソコード

838 名前:ネんだから動いてればよくて、なんかエラーでてたり客に文句言われたら対応すりゃいい []
[ここ壊れてます]

839 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/10(金) 16:39:09.45 ID:yKHSCA+P0.net]
多少の処理速度の差やオーバーヘッドを気にして見通しの悪いコードにするのは本末転倒
ましてやPHPだし

840 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/10(金) 20:36:55.90 ID:B/44UtXJa.net]
>>825
それループで回る分だけ毎回array_push呼ばれるから



841 名前:デフォルトの名無しさん (ワッチョイ beaf-cGUq) [2017/02/11(土) 01:35:29.95 ID:sRxxkJoY0.net]
$ary[] =
これの方が美しいし速い

他の言語じゃ無理だからな

842 名前:デフォルトの名無しさん (ワッチョイ 9f4a-1VpQ) mailto:sage [2017/02/12(日) 17:20:35.17 ID:abtsR4dg0.net]
>>830
どれくらい速いの?

843 名前:デフォルトの名無しさん (ワッチョイ beaf-cGUq) [2017/02/12(日) 18:06:30.99 ID:wFV2vg550.net]
>>831
二通りにしかないんだからarray_pushより速いで十分でしょ?

844 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/12(日) 21:51:06.88 ID:QFyd4EUF0.net]
kakaku.com/item/K0000820062/

価格.comみたいなK0000820062ってどういう風に作るんだろう
UUIDじゃないよね?

845 名前:デフォルトの名無しさん (ワッチョイ 7230-jWyY) mailto:sage [2017/02/12(日) 21:59:19.74 ID:xZhsq1SY0.net]
なんかのIDにK付けて0埋めしてるだけちゃうん

846 名前:デフォルトの名無しさん (ワッチョイ 83d6-Frzy) mailto:sage [2017/02/12(日) 23:54:04.06 ID:GioNsZNN0.net]
>>833
おまえ、頭がやばいよ…

847 名前:デフォルトの名無しさん (ワッチョイ 265b-ENO3) mailto:sage [2017/02/13(月) 10:24:20.63 ID:7hOSszMQ0.net]
>>833
プログラミングの基礎を勉強するべき

848 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/13(月) 12:03:26.71 ID:MX/uxF0s0.net]
>>831
そこで自分でコード書いて試そうという発想にならないならプログラミングには向いてないと思う
人間には得手不得手ってあるからね
手遅れになる前に他の道を探そう

849 名前:デフォルトの名無しさん (ワッチョイ dfd6-CIv3) mailto:sage [2017/02/13(月) 12:53:46.07 ID:dq41sjDl0.net]
protected function getResponseGroup(): array
{
return $this->responseGroup;
}

こんな感じでわざわざ取得メソッド使うのって、型の強制できるぐらいのメリットしかないのかね

850 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/13(月) 13:48:40.27 ID:MX/uxF0s0.net]
>>838
そこら辺は設計思想にもよるし”これが絶対に正しい”というのは無いかな
”getter setter”とかでググってメリット・デメリットを理解した上で”自分の中での正解”を探せばいいのではと



851 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/13(月) 16:03:15.51 ID:KMmRwMwBa.net]
>>838
子クラスに親クラスのプロパティを絶対に変更させないという強い意志が感じられる(小並

852 名前:デフォルトの名無しさん (ガラプー KK4b-4eBQ) mailto:sage [2017/02/13(月) 18:39:07.72 ID:qWBqE6jZK.net]
「$this->」
これを何十回も入力させるってバカみたい。

853 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/13(月) 18:52:43.00 ID:pn1QtbZ90.net]
そう思うなら自分好みのパーサー書けばいいんじゃね

854 名前:sage (JP 0Hfe-JgBl) [2017/02/14(火) 12:57:43.87 ID:vlYZpaj3H.net]
すみません教えてください。

ドキュメントルートが/home/virtual/id/public_htmlとして、一つ上のパスを取得したいとします。
(上の例なら/home/virtual/id)

perlで

$ENV{'DOCUMENT_ROOT'} =~ /(.+)\/(.+?)/;
my $path = $1;


これと同じことをPHPでやりたいのですが、見当が付きません…
よろしくお願いします。

855 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/14(火) 13:38:34.23 ID:BZw4l4zq0.net]
dirname($_SERVER['DOCUMENT_ROOT'])

856 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/14(火) 13:44:44.59 ID:AvrQL4xh0.net]
dirnameのマニュアル読むといろいろ簡単にできて便利だよ
php.net/manual/ja/function.dirname.php

今確認したら、PHPってファイルシステムの関数めちゃあるね。

857 名前:843 (JP 0Hfe-JgBl) mailto:sage [2017/02/14(火) 13:49:26.20 ID:vlYZpaj3H.net]
>>844
>>845

ありがとうございます!!
こんなの直接できるんだ。。唖然。。

858 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/14(火) 16:16:39.35 ID:vX4Pr1L+a.net]
Pythonのos.path, Rubyのpathname, PerlにだってFile::Specがあるんだぜ?
ファイルシステム依存なんだし組み込みじゃなくとも標準ライブラリでラップされてて何も不思議じゃない

859 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/14(火) 17:26:18.09 ID:i5SPUrbm0.net]
>>846
つか>>843のperlのソースコードの意味(正規表現)は理解できてるんだろうか?
PHPでも正規表現を使えば似たようなコードで実現できるでしょ
もちろん1つ上のパスを取得する「だけ」なら>>844のがスマートだけど

860 名前:デフォルトの名無しさん (ワッチョイ 1246-3OfB) [2017/02/14(火) 17:46:30.89 ID:PYBh6Cc20.net]
Xcodeの質問ってここで良い?
view controllerでそれぞれのiPhoneの画面サイズがインプットされてない?
出ないんだが?誰か解決策教えてくださいな



861 名前:843 (JP 0Hfe-JgBl) mailto:sage [2017/02/14(火) 18:39:19.55 ID:vlYZpaj3H.net]
>>846

PHPの正規表現の後の$1、$2…が理解できんのです。
誰が作ったのかさえわからん、みんな逃げちゃった(=PHPわかる人が誰もいない+私もPHP書いたこと一度もない)ものを触らざるを得なくなって。

置換もさっぱり。少なくともs/before/after/ig;みたいに簡単じゃないことだけは昨日知った…

862 名前:デフォルトの名無しさん (ワッチョイ 0f59-cGUq) mailto:sage [2017/02/14(火) 19:45:33.94 ID:GvFlLFXU0.net]
>>850
sed分かるなら何の問題もないでしょ

863 名前:デフォルトの名無しさん (ワッチョイ 27f8-cGUq) mailto:sage [2017/02/14(火) 21:45:49.32 ID:BZw4l4zq0.net]
>PHPの正規表現の後の$1、$2…が理解できんのです。
>>843で後方参照して同じことしてるじゃん?
echo preg_replace('/(.+)\/(.+)?/', '$1', '/home/virtual/id/public_html')

[JS] '/home/virtual/id/public_html'.replace(/(.+)\/(.+)?/, '$1')
[Rb] '/home/virtual/id/public_html'.gsub(/(.+)\/(.+)?/, '\1')
[Py] re.sub(r'(.+)/(.+)?', '\\1', '/home/virtual/id/public_html')

Perlが同じように書けるかは知らないけど
テキスト処理能力を進化させすぎたPerlが多分特殊な方

864 名前:デフォルトの名無しさん (アウアウカー Sa1f-S0So) mailto:sage [2017/02/14(火) 22:33:22.74 ID:aTcP7cxLa.net]
置換じゃなくてキャプチャしたいんでしょ
マニュアルのpreg_match見れば分かるけどキャプチャ保存用に引数一個追加する必要がある

865 名前:デフォルトの名無しさん (ワッチョイ 9342-3OfB) mailto:sage [2017/02/14(火) 23:05:03.22 ID:AvrQL4xh0.net]
Perlの書き方は、シェルスクリプトの経験があればなんとかなるけど
何にも知らない人が新しくプログラムを学ぼうとすると
癖が多すぎてwww
まぁプログラムが好きで、プグラムを組むことが目的な人が多い感じするよね。

866 名前:843 (JP 0Hfe-JgBl) mailto:sage [2017/02/15(水) 09:52:31.78 ID:dsR3IgXDH.net]
>>852
その位置に$1か…
ありがとうございます。

>>853
書き方がわからなくて、最後の/以降の文字列を取得してから空文字列で置換しようとしてもうまくいかず、splitで分割して前方だけを$_[0]のような形で取得しようとしても空文字が返り…
一昨日からいろんなところをググりながら調べているですが、マスターできる気がしません…

>>854
ご想像通り?シェルとPerl以外書いたことがありません(ExcelのマクロとVWD2005のC#はほんの少し触った)。


みなさまありがとうございました。がんばってみます。。

867 名前:デフォルトの名無しさん (ワッチョイ 26c9-cGUq) mailto:sage [2017/02/15(水) 10:57:58.02 ID:auzGmUVk0.net]
>>855
シェルやperlを書いたことがあるなら大丈夫でしょ
シェル芸とかいまだにマニュアル読みながらじゃないと書けないわ

868 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/15(水) 14:03:33.63 ID:VOjsPlCF0.net]
>>855
DOCUMENT_ROOTが空っぽの事がある可能性も踏まえるなら

if (preg_match('/(.+)\/(.+?)/', getenv('DOCUMENT_ROOT'), $match)) {
$path = $match[1];
}

>>843と同等のPHPコード
print_r($match); の出力結果見てみるといい
細かいことをいえば正規表現は /^(.+)\/.+?$/ のが良いと思うけど

説教臭くて申し訳ないが言語が違えど正規表現の書き方なんて大差ない
基本を理解してないからこういう時に潰しが効かない

869 名前:デフォルトの名無しさん (ワッチョイ 0f46-ENO3) mailto:sage [2017/02/15(水) 14:28:38.96 ID:JwCJBy8n0.net]
perlの変態文法に比べるとPHPのがまだ大分素直だと思う
↓大昔perlメモから拝借したcsvを扱うコードだけど今読むと目眩がするわw
$tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
@values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_}
($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);

870 名前:デフォルトの名無しさん (ワッチョイ 9b2c-cGUq) mailto:sage [2017/02/15(水) 14:32:45.87 ID:f1EoCQSH0.net]
それは例としては書き方が悪いだけ



871 名前:デフォルトの名無しさん (ワッチョイ d376-CIv3) mailto:sage [2017/02/15(水) 14:37:57.30 ID:6fjfCJ8x0.net]
cakephp3の質問はここでしてもいいのかな?

872 名前:デフォルトの名無しさん (ワッチョイ 8356-ENO3) mailto:sage [2017/02/15(水) 14:52:38.34 ID:VOjsPlCF0.net]
perlメモ懐かしすぎ。まだサイトが存在してて驚いた
EXCEL形式の改行コードを含むcsvを配列にするソースとか大昔PHPに翻訳して使ったな
>>857
$path = (preg_match('/^(.+)\/.+?$/', getenv('DOCUMENT_ROOT'), $match)) ? $match[1] : '';
と三項演算子で書いた方がperlに慣れた人には分かりやすいかな?とも思ったんだけど

873 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sega [2017/02/17(金) 17:35:16.66 ID:9e/vHQb30.net]
PHPDOCで質問なんだけど、クラスのメソッドのコメントで
戻り値は無しで代わりにメンバ変数を書き換えるとき
どうやってそれを明示すればいいか教えて

874 名前:デフォルトの名無しさん (ワッチョイ cba0-/qTs) mailto:sage [2017/02/19(日) 16:27:17.00 ID:vBQrYNmd0.net]
画像を保存してると消えているファイルが有るのだが、
普通に404ならまだいいのだが下記のようなやつの対処方法がわからない
どうすると良いのだろうか?

1.画像がエラー画像に置き換わっているパターン
i.imgur.com/IEqhtkG.jpg

2.画像ではなくエラーページに移動するパターン
www.dotup.org/uploda/www.dotup.org534402.jpg

875 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK1f-2nU5) mailto:sage [2017/02/19(日) 16:41:33.64 ID:258Rl1AZK.net]
事前にエラー画像とエラーページのURLを記録しておき、比較する

876 名前:デフォルトの名無しさん (ワッチョイ 7b38-yXFx) mailto:sage [2017/02/20(月) 07:05:28.09 ID:uW8j6qNc0.net]
perlの文法を知っていて、c#でデータベースプログラムが書けるレベルだけど、phpは全く知らない
phpのおすすめの教科書ある?

877 名前:デフォルトの名無しさん (ワッチョイ fbf8-eq+O) mailto:sage [2017/02/20(月) 07:29:48.71 ID:siKT4Z4H0.net]
昔はテンプレに市販の書籍は嘘が多いだの、最良の教科書はPHPマニュアルだの書いてたけど今書いてないのか。
とりあえず>>1の入門と簡易チュートリアルの章でも読んでみたら?

878 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sage [2017/02/20(月) 10:27:48.14 ID:gVDOpmLx0.net]
>>863
ステータスで見りゃいいんじゃね?
302が返ってきたら、ビクッとして注意すればいい

879 名前:デフォルトの名無しさん (ワッチョイ cb56-Z7AI) mailto:sage [2017/02/20(月) 11:54:58.17 ID:KgKWtHg50.net]
>>863
HTTPリクエストをどんな手段でやってるのか分からないけど
レスポンスヘッダすら確認できてないならそのリクエスト方法から見直した方がいいと思う
一部省略したけど一目瞭然でしょ

// i.imgur.com/IEqhtkG.jpg
Array
(
[0] => HTTP/1.1 200 OK
[last-modified] => Wed, 14 May 2014 05:44:36 GMT
[content-type] => image/png
[content-length] => 503
[age] => 10135875
[server] => cat factory 1.0
)


// www.dotup.org/uploda/www.dotup.org534402.jpg
Array
(
[0] => HTTP/1.1 200 OK
[content-type] => text/html
[server] => cloudflare-nginx
)

880 名前:デフォルトの名無しさん (ワッチョイ cb56-Z7AI) mailto:sage [2017/02/20(月) 11:58:16.76 ID:KgKWtHg50.net]
>>865
大昔からweb系やってたperl上がりのたくさんの人にPHPを教えてきたけど
最良の手段は自分がperlで組んだソースをPHPで書き直させる事だった

もし過去に自力でperlで組んだサービスが何もないなら
まずは自分が何を作るのか(掲示板でもwikiでもブログでも何でもいい)はっきりさせる
本とか考えるのはその後でOK
目的がはっきりしないのに概念だけ覚えようとするのは時間の無駄



881 名前:デフォルトの名無しさん (ワッチョイ 7b38-fFgi) [2017/02/20(月) 14:33:23.87 ID:uW8j6qNc0.net]
>>869
なるほどなと思った。どうもありがとう。

882 名前:デフォルトの名無しさん (アウアウカー Sa9f-DJtQ) mailto:sage [2017/02/20(月) 19:12:52.64 ID:176Yfxbca.net]
MVCというか、インスタンスについて質問させてください
今の職場だとモデルクラスのメソッドを全部staticにしてインスタンス化なしでコントローラーから
直接呼んでるんですけど、そっちの方が一旦インスタンス化するより効率的なものなんですか?

883 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sage [2017/02/20(月) 19:30:51.57 ID:gVDOpmLx0.net]
>>871
徹底しているなら、いいアイデアかも
割り切っているならテストもしやすそう

884 名前:デフォルトの名無しさん (ワッチョイ cba0-/qTs) mailto:sage [2017/02/21(火) 21:07:02.12 ID:GYKIdTkl0.net]
>>867
>>868

返信遅くなってすみません。
すごくうまくいきました。
ありがとうございます。

885 名前:デフォルトの名無しさん (ワッチョイ 5f30-XdR7) mailto:sage [2017/02/21(火) 22:11:34.97 ID:r+HgLB6m0.net]
>>871
staticおじさん?

886 名前:デフォルトの名無しさん (ワッチョイ fbf8-eq+O) mailto:sage [2017/02/21(火) 23:12:20.06 ID:9alYtg+g0.net]
効率非効率の問題じゃなくて
そんな書き方するぐらいならオブジェクトいらんのじゃ

887 名前:デフォルトの名無しさん (ワッチョイ 9bc1-P9CU) mailto:sage [2017/02/21(火) 23:31:24.27 ID:KlPaDOdy0.net]
内部にstatic変数で状態持ってるならただの巨大なグローバル変数だからなぁ

888 名前:デフォルトの名無しさん (ワッチョイ 4fc9-eq+O) mailto:sage [2017/02/22(水) 14:55:33.04 ID:7bpb3LbA0.net]
>>876
状態はすべてセッション変数に持たせてたとかじゃない?

889 名前:デフォルトの名無しさん (アウアウカー Sa9f-yXFx) mailto:sage [2017/02/22(水) 16:57:51.58 ID:4F/fS8NSa.net]
>>877
いやそんなもん尚更キモいでしょ・・・

890 名前:デフォルトの名無しさん (ワッチョイ db59-eq+O) mailto:sage [2017/02/22(水) 17:09:38.25 ID:BtmqmRAg0.net]
別に巨大なグローバル変数でもいいんじゃないの



891 名前:デフォルトの名無しさん (ブーイモ MM7f-9g8o) mailto:sage [2017/02/22(水) 21:36:50.61 ID:zYmlfQOdM.net]
>>877
絶望しかねえな

892 名前:デフォルトの名無しさん (ワッチョイ 8b42-fFgi) mailto:sage [2017/02/22(水) 21:37:25.75 ID:CIb5Sb890.net]
namespaceの代わりのstatic変数ってかww

893 名前:デフォルトの名無しさん (ワッチョイ 8ec9-8lb6) mailto:sage [2017/02/23(木) 10:05:12.54 ID:lHjqIPrz0.net]
>>880
状態を持たせてそれをページ間でまたがって維持するのって
ストレスたまるから、なんもかんもセッションに全部持たせるのは
一周回っていいアイデアな気がしてんだけど、気の迷いかね

894 名前:デフォルトの名無しさん (ワッチョイ 7f42-JtgB) mailto:sage [2017/02/23(木) 12:29:18.22 ID:abknmwyr0.net]
セッション使うのが普通かと思うけど・・

昔セッションがまだ一般的でなかった頃
自分でクッキー設定してやってるときに
なんでもかんでもクッキーに入れてたという笑い話はあったけどww
PHPがあまりにも簡単にセッション使えるからピンとこない話だろうけど

895 名前:デフォルトの名無しさん (アウアウウー Sacf-gc5m) mailto:sage [2017/02/23(木) 12:32:50.71 ID:sHiWuKpYa.net]
つまり状態変数なんてものが諸悪の根元なわけだな!
そしてモナドの海に沈み孤立していくのだ

896 名前:デフォルトの名無しさん (ワッチョイ 8e5b-HyQo) mailto:sage [2017/02/23(木) 20:22:33.45 ID:chlnLhRq0.net]
大量のnamespaceをまとめたり、bootさせたときに読み込ませて
staticで取得する方法は一般的にあるのに、
なぜstaticをバカ扱いする奴いるのか謎だな

897 名前:デフォルトの名無しさん (ワッチョイ ca30-weqm) mailto:sage [2017/02/23(木) 23:17:49.97 ID:Svl7KGJP0.net]
作るものによるんだろうけどセッションってログイン済みのtrue/falseにしか使わんなー
EC(OSSじゃない)とか某業界向けのニッチなもんしか作ってないけど
でもredis使ってなんでもかんでもセッションぶっ込んでるのは見たことあるな

898 名前:デフォルトの名無しさん (ワッチョイ 2f56-HyQo) mailto:sage [2017/02/24(金) 11:52:02.24 ID:a8MKJYdX0.net]
エラーメッセージを全部セッションにぶち込んでるのは見たことあるな
PHPしかできない人の書くコードを読むと脳味噌がとろけそうになる事があってある意味新鮮

899 名前:デフォルトの名無しさん (ワッチョイ 8ec9-8lb6) mailto:sage [2017/02/24(金) 15:18:00.37 ID:jIC6X1VU0.net]
>>886
それ以外の情報はどうしているの?
毎回DBから取得するようにしてセッションには一切持たない感じ?

入力確認実行直前の画面とかで前画面での入力情報はどこに持ってる?
どうせ顧客の入力データだしクッキーに全持ち?

900 名前:デフォルトの名無しさん (JP 0H56-WLWd) mailto:sage [2017/02/24(金) 15:33:07.09 ID:L3urbmMZH.net]
全然関係ないけど、「入力確認実行直前の画面」が世界からなくなればいいのにと思ってる



901 名前:デフォルトの名無しさん (アウアウウー Sacf-gc5m) mailto:sage [2017/02/24(金) 15:36:25.55 ID:EbrJ09Pka.net]
PHPに未来はありますか?

902 名前:デフォルトの名無しさん (ワッチョイ 06af-8lb6) [2017/02/24(金) 15:46:57.56 ID:FuJuA/X30.net]
php7一択だよ
python ruby perは遅すぎる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<340KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef