トップページ⇒php
1002コメント311KB

PHP質問・雑談スレ 2【初心者お断り(ROM歓迎)】©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net2016/10/17(月) 21:44:12.59ID:???
PHP関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://echo.2ch.net/tech/ (【PHP】で板内を検索)

前スレ
http://tamae.2ch.net/test/read.cgi/php/1461283091/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
 http://echo.2ch.net/test/read.cgi/tech/1444216746/

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0266nobodyさん2016/10/21(金) 18:13:21.18ID:???
>>263
数値項目も文字列が戻る前提でコーディングし、なおかつPHPでもJavaScriptでも律儀に"==="を使っていて、ある日数値項目は数値で戻るようになると死ぬ
0267nobodyさん2016/10/21(金) 18:35:28.79ID:???
>>266
そんなんで死なないようにO/Rマッパーを作ってラップし、
エンティティの定義で型強制をするわけだが、

>>141の言ってるEloquentもDoctrineって、その辺やってくれるのかね?

俺は昔Doctrineの導入のクソめんどくささに辟易して自分で[クエリビルダ:O/Rマッパー]を作るに至った。
composerとか、まだ普及してなかった時代の話だ。
今はもっとマシかもしれん。
0268nobodyさん2016/10/21(金) 18:37:53.01ID:???
PDOがなんでstdClassだけじゃなくて、ユーザー定義のオブジェクトにresultをマッピングできるようになってるのか、
よく考えてみるべきだよ。
0269nobodyさん2016/10/21(金) 22:03:34.73ID:???
composerって最近きくけどなんなん?
pearみたいなもんじゃないの?
0270nobodyさん2016/10/21(金) 23:23:47.03ID:???
>>269
とりあえず使ってみれば分かるけど, 依存関係の管理をしてくれる
そしてオートローダ―も自動生成してくれるからプログラマの手間が大幅に減る

Rubyのgem/bundler, Pythonのpip, Node.jsのnpmみたいな。最早必須
0271nobodyさん2016/10/22(土) 01:21:32.24ID:???
home.phpがあります。
ボタンを押したとき、非同期でdata.phpからデータを取得しています。
ページの初期化時もdata.phpからデータを取得するにはどうすればよいでしょうか。
0272nobodyさん2016/10/22(土) 05:48:24.63ID:???
ページの初期化時にボタンを押した時の処理をすればいいじゃない
ていうかそれPHPの質問じゃないで
0273nobodyさん2016/10/22(土) 05:51:24.65ID:???
>>270
とりあえず使ってみるけど何を入れたらええの
おすすめのパッケージおせえて
02742722016/10/22(土) 06:29:08.38ID:???
>>271
あ・・初期化ってonload時のことかと思ってそう答えたけど
phpだけですませたいってことか?

home.phpで
・data.phpをrequireして関数を呼ぶ
・ボタン押した時と同じ内容のリクエストをdata.phpに送って結果を取得する
 (curlあるいはstream_context作成してfile_get_contentsなど)

とかそのあたり?中身わからんのでなんとも
0275nobodyさん2016/10/22(土) 23:51:36.53ID:???
>>273
PHPUnitとかphpspecでTDDやBDDでも始めよう
0276nobodyさん2016/10/24(月) 14:35:20.77ID:???
>>273
carbon
underscore-php
json-schema
0277nobodyさん2016/10/24(月) 14:38:12.28ID:???
>>271
方法その1: ページロード時にボタンクリックで実行される関数を呼び出す

方法その2: 初期データをページに埋め込んで戻す
var initial_data = <?php echo json_encode($data); ?>;

方法その3:
方法その2に加えて、それを使ったレンダリングをサーバサイドで実行し戻す。
0278nobodyさん2016/10/25(火) 14:31:47.75ID:9sW4yNav
スレ違いだったらすいません
xamppでローカルサーバーを立て、テストしています
テストのローカルコンピュータと、本番のネットワークサーバーで処理を分岐させたいのですが、どういう風に分岐させるのが良いでしょうか?

具体的には、sakuraサーバーでデータベースのアドレスが"localhost"で取得できないために分岐させたいとおもっています。
0279nobodyさん2016/10/25(火) 15:00:29.28ID:???
>>278
> 具体的には、sakuraサーバーでデータベースのアドレスが"localhost"で取得できないため
意味がわかりません。
localhostで接続する設定がされてないだけでは?
0280nobodyさん2016/10/25(火) 15:04:09.42ID:???
>>278
言ってることがいまいちよくわからんが
>"localhost"で取得できないために分岐させたいとおもっています
てことは別にsakuraとlocalhost(xampp入ってるPC)のDBは同期する必要がないってことでしょ?
なら別に分岐させる必要なんてないのでは
0281nobodyさん2016/10/25(火) 15:25:08.75ID:9sW4yNav
>>279-280
わかりづらくてすいません。
もう少し勉強し直してきます
0282nobodyさん2016/10/25(火) 16:01:15.50ID:???
>>281
普通なら、接続先をlocalhostにしてローカルな環境で開発したものを、そのまま本番環境に持って行けばいいだけ。
下手にhostnameで繋ごうとすると、pg_hba.confで接続設定を追加しないといけない。
それとも、ローカルな環境から本番環境のデータベースに接続したいって話?
0283nobodyさん2016/10/25(火) 16:05:42.39ID:???
sakuraのdbはlocalhostじゃない場所にあるから、xamppのをアップロードするとlocalhostを見てしまう→見つからない
ってことだと思う
それを防ぐために分岐させたいと言うことだろう
やったことないけどそんな方法あるんかね
0284nobodyさん2016/10/25(火) 16:57:02.97ID:???
$local_mode = true;
$dns = $local_mode ? local : sakura;
$pdo = new PDO($dns);
0285nobodyさん2016/10/25(火) 17:07:49.84ID:???
>>284
そのコード、ローカルで実行してもsakuraで実行してもlocal_mode = trueになるよね、、、
レベルで詰まってるのだろうか
0286nobodyさん2016/10/25(火) 17:28:09.31ID:lqPEVp/h
WordPressの検索結果表示PHPプログラムについての質問です。

標準では
get_template_part( 'template-parts/content', 'search' );
のコードで検索結果を表示している様なのですが、
この関数で表示されるコードをa href="のhtmlタグのまま表示したいと思っています。

htmlspecialchars()やpreを使っても出来ないので、どうしたら解決出来ますか?
0287nobodyさん2016/10/25(火) 17:32:14.92ID:???
>>285
284だけど、俺は質問者じゃないのだが
例えばそういうふうにするって示しただけで
当然本番じゃfalseにしてから使うのを想定してる
0288nobodyさん2016/10/25(火) 17:43:17.66ID:???
>>283
ipアドレス取得してそれで判断させれば良いんじゃない
0289nobodyさん2016/10/25(火) 17:46:53.99ID:???
>>287
> 284だけど、俺は質問者じゃないのだが
いや、わかってるし

> 当然本番じゃfalseにしてから使うのを想定してる
編集するならそんなめんどいことしなくて
$pdo = new PDO(sakura);
ってやればいいし
一つのコードで何かを振り分けたいんじゃないの?
0290nobodyさん2016/10/25(火) 18:05:16.41ID:???
・hostname()で切り分ける
・環境変数DB_HOSTを設定しそれを使う(なければlocalhostとか)
・アプリのエントリポイントを分ける(index.phpとindex_dev.phpとか)
0291nobodyさん2016/10/25(火) 19:48:51.12ID:???
接続先ホスト名(必要ならポート番号なども)を設定ファイルに追い出すのが無難な方法じゃないかな。
開発環境と運用環境で処理を分けるってのはDBに限った話じゃないだろうし。
0292nobodyさん2016/10/25(火) 21:52:30.71ID:???
>安全な接続ではありません

>www.php.net の所有者による Web サイトの設定が不適切です。
>あなたの情報が盗まれることを防ぐため、この Web サイトへの接続は確立されません。

>www.php.net は不正なセキュリティ証明書を使用しています。
> 自己署名をしているためこの証明書は信頼されません。
> エラーコード: SEC_ERROR_UNKNOWN_ISSUER

だれかwgetで取ってくるから最新のソースのアドレス頼む
0293nobodyさん2016/10/25(火) 22:03:53.46ID:???
sakura調べてみたらDBサーバのアドレスは
https://help.sakura.ad.jp/hc/ja/articles/206053952--%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90-%E8%BF%BD%E5%8A%A0-%E5%89%8A%E9%99%A4
(禁止ワードで張れないからリンク先参照)
のようだからlocalhost指定が出来ないってだけの話だろ
本番に移行するときにDBの接続情報変えればいいってだけの話
0294nobodyさん2016/10/26(水) 00:17:59.48ID:???
>>292
…
https://secure.php.net/downloads.php
0295nobodyさん2016/10/26(水) 02:38:04.78ID:???
>>294
oh...Googleからトンだらそうなったんだけどそれが正しいアドレスか
thx
0296nobodyさん2016/10/26(水) 10:43:18.97ID:???
>>293
> 本番に移行するときにDBの接続情報変えればいいってだけの話
それはどうやって実現できますかって話なんだけどね
0297nobodyさん2016/10/26(水) 13:22:24.63ID:???
>>296
まず2つの接続情報を書いとかないと実現はできない。
あとは環境変数見て振り分ければ完成。

サーバを移行させたり 使う環境が変わることはあるわけだし、
普通は接続情報は都度直接編集するもんでしょう。
同じlocalhostで通るにしても ユーザ名やパスワードまで普通合わせたりしないし。

そのへん考えなくていいSQLite使えばいいと思うよ。
0298nobodyさん2016/10/26(水) 13:41:58.54ID:???
>>297
> 普通は接続情報は都度直接編集するもんでしょう。
しないよ。
ワンクリックデプロイですがな。
0299nobodyさん2016/10/26(水) 14:00:48.25ID:???
設定に関する情報がないといけないわけで、
ワンクリックデプロイといってもやってることは同じでしょ。
0300nobodyさん2016/10/26(水) 14:28:42.50ID:???
>>299
> 設定に関する情報がないといけないわけで、
> ワンクリックデプロイといってもやってることは同じでしょ。
書き方が悪かった。

しないのは、「サーバを移行させたり 使う環境が変わること」があっても、「接続情報は都度直接編集」すること。
サーバ毎にユーザ名やパスワードを変更することもしない。
どこでも、localhost接続で同じユーザ名、同じパスワード。

「サーバを移行させたり 使う環境が変わること」やデプロイ先が増えたりしたら、デプロイスクリプトのデプロイ先を変更するだけ。
0301nobodyさん2016/10/26(水) 14:35:17.91ID:???
>>299
データベースのマイグレーションツールは使ってる?
そのツールのデータベース接続情報がファイルに記述されてるとして、それはどうやって管理してる?
ユーザ名・パスワード直書き?
0302nobodyさん2016/10/26(水) 14:48:36.51ID:???
都度「直接」編集
これがいけなかったんだな
0303nobodyさん2016/10/29(土) 17:19:30.19ID:???
自分で適宜httpdやらDNSやら
その他WEBサービス系で必要であろうサーバは整えられるんだけど、
開発できる言語がphpとJavascript、SQLしか使えないんだけど、
その程度の者でもWEB系の開発企業で即戦力になったりしますか?
ちなみに実務は7年で、入社してからずっと時間給で働いてます。
そろそろ先々が心配なので転職or時間単価向上を考えたいと検討してます。
雑談スレと書いてあったので、こういう話は書いても大丈夫でしょうか。
スレ違いだったらROMに戻ります。。。
0304nobodyさん2016/10/29(土) 17:37:39.55ID:???
>>303
プログラマ板があるからそっちの方が良いかも?
サーバー管理者は大企業で重宝されるイメージ。一度大きい企業回ってみて、自分の価値を確認するというのはどうだろう
NTTデータとかyahooなどの超大手に、当たって砕けるというより自分の価値を確認するつもりで受けてみてはどうかな
0305nobodyさん2016/10/29(土) 20:44:28.72ID:???
>303
PHP+JavaScript+SQLは、案件が最も多いと同時に、金額が最も安い組み合わせです。
次の仕事を見つけることはできても、それで収入アップが実現できるかは厳しいんじゃないでしょうか。
03063032016/10/29(土) 21:55:10.97ID:???
レスありがとうございました。
多々ご指導くださり、大変勉強になりました、ありがとうございます。
単価にすると時間当たり900円にも届いてない状態で、
流石にフリータと変わらないと最近焦りを隠せなくなっておりました。
せめて実務経験があればと思っていたのですが、
間もなくいわゆる”35歳”を迎えるので実績が仮にあっても
切られてしまうのではないかと気が気ではなくなりつい投稿してしまいました。
スレ汚し失礼しました、ご教示いただきました内容を念頭に置いて新しい言語にチャレンジするなり、
体当たりするなりしてみたいと思います。
ありがとうございました。
0307nobodyさん2016/10/29(土) 23:18:37.38ID:???
2chでそこまでかしこまらなくても平気だよ…w
がんばってください。
0308nobodyさん2016/10/29(土) 23:28:07.72ID:???
>>305
安いといってもその組み合わせ月50万もらえるからね
0309nobodyさん2016/10/30(日) 09:51:33.15ID:???
おちんぽお断り
0310nobodyさん2016/11/01(火) 16:27:31.79ID:???
mysqlのtime型カラムに格納されている時間の変更方法を教えてください

例えば「18:00:00」を「18:00」に変換するとき、どうすればよいでしょう?
ただしPHP側の操作のみで、文字の切り取り以外でお願いします
0311nobodyさん2016/11/01(火) 17:03:56.16ID:???
date_format()?
http://php.net/manual/ja/datetime.format.php
0312nobodyさん2016/11/01(火) 17:06:19.32ID:???
DateTime::__constructかDateTime::createFromFormatでDateTimeに変換すれば
0313nobodyさん2016/11/01(火) 17:39:20.52ID:???
文字の切り取りがなぜ嫌なのか
0314nobodyさん2016/11/01(火) 17:43:30.85ID:???
スレがたくさんあってどこに書き込んで良いかわからなかったんだけど、、、

「入力フォームを多用+保護されているけどReaderで保存可なPDF」をテンプレートとして、
ストレスなく扱えるPHPライブラリってあるかしら?

FPDIだと、入力フォームは消えてしまうし、PDFが保護されていたりすると、エラーが出て
読み込めないようで…。

有償、無償は問いません。
どなたかご教示いただけないでしょうか。
0315nobodyさん2016/11/01(火) 17:57:04.38ID:???
>>314
まずは、ストレスがあるが要求仕様を満たしているライブラリの例を挙げてもらおうか。
0316nobodyさん2016/11/01(火) 18:27:16.91ID:???
>>315

ごめんなさい、要は、

> FPDIだと、入力フォームは消えてしまうし、PDFが保護されていたりすると、エラーが出て
> 読み込めないようで…。

これがストレス。
で、書き方を間違えてた。保護は関係ないみたい。圧縮されてるとエラーでした。
0317nobodyさん2016/11/01(火) 18:36:48.61ID:???
>>319
とりあえず試してだったライブラリを列挙して。
そこにないライブラリ知ってたら教えるから。
0318nobodyさん2016/11/01(火) 18:38:05.37ID:???
>>317
あとで出そうと思っている候補はいくつあるの?
0319nobodyさん2016/11/01(火) 18:41:47.03ID:???
(これはさっさと自分で試した方が早いパターンやね・・・)
0320nobodyさん2016/11/01(火) 18:42:49.19ID:???
せやで。要するに俺様にお前の情報を教えろって流れや。いつものアレ。
0321nobodyさん2016/11/01(火) 18:46:40.76ID:???
有償でもいいってことだから、鉄板のPDFlib試してみたら。
ライセンスキー入れなくてもウォーターマークが入るだけで、普通に使えたような記憶があるよ。
0322nobodyさん2016/11/01(火) 18:47:57.44ID:???
どういうライブラリを試して駄目だったのか聞いてみないとわからないじゃん。
FPDI以外試したのか?
ググったのか?(ぐぐりゃすぐに候補はでてくる)

直接PDFを操作する系のライブラリ以外は候補に出来るのか?
調べたか?
使ってみたか?

まず、これこれは駄目でしたって何で言えないんだよ。
0323nobodyさん2016/11/01(火) 18:49:23.70ID:???
>>322
なんで知ってるライブラリをすぐに書くことができないんだよ
また山ほどあるパターンか?
0324nobodyさん2016/11/01(火) 18:50:23.33ID:???
ググったらzend_pdfとかいうのがでてきたが
これは試したか?
0325nobodyさん2016/11/01(火) 18:51:30.53ID:hf4qXWjd
本格的にWEBプログラマーになりたいと思うのですが、よく使う機能や関数はありますか?
現在はある会社のHP担当としてアルバイトで働いています。
主にwordpressのループ処理+アクセス解析ばかりで、あまりPHPを覚えたとはいえない状態です。
何か覚えたほうがいいものがあれば、片っ端から教えてください。
現在は以下のことを学習済みです
・型の違い
・if・for・switch構文
・文字列の操作
・日付の操作
・class作成。継承とかはほとんどしたことありません。
・gitは自分でリポジトリを作ってpush、pull、ブランチを作成したり、バージョンを戻したりと基本的な事ができるようになったレベルです
・SQLはコピーペーストでSELECTやINSERTを使えるレベルです

何から覚えるとよいでしょうか?
それともwordpressを極めたほうがいいのでしょうか?
0326nobodyさん2016/11/01(火) 18:51:39.21ID:???
>>323
なんで俺が知ってるライブラリを列挙しないといけないんだよw
0327nobodyさん2016/11/01(火) 18:53:30.64ID:???
>>326
要求仕様を満たしてるライブラリをいくつか挙げるだけじゃん。
0328nobodyさん2016/11/01(火) 19:09:47.89ID:???
>>325
目指すところにもよると思うけど、見てくれの成果を急ぐならフレームワーク使ってなんか作ってみれば?
くれぐれもインクルードガードを理解できないような大人にならないように気を付けて。
0329nobodyさん2016/11/01(火) 19:25:24.08ID:???
>>325
ログイン機能
セッション周りは知っておいたほうがいい。全然知らないと死ぬぞ
0330sage2016/11/01(火) 19:45:20.09ID:p6F2bD12
https://www.youtube.com/watch?v=tY-xyCbzdqY

https://www.youtube.com/watch?v=NJYs5GTmdcg
0331nobodyさん2016/11/01(火) 19:46:50.59ID:???
>>330
アンチかファンかわからない書き込みって混乱するからやめてくれ〜
0332nobodyさん2016/11/01(火) 20:34:29.15ID:???
>>325
WEB屋でいつづけるならPHPなんか覚えたって役に立たない。
Wordpressという名の言語を覚えたほうがいい。

プログラマーになりたいならWordpressみたなゴミクズにはできるだけ関わらない方がいい。

>何から覚えるとよいでしょうか?

なにはなくともforeach。
0333nobodyさん2016/11/01(火) 22:18:22.00ID:???
むしろphp覚えておけば確実にあと十年はご飯食えると思うがな。
0334nobodyさん2016/11/02(水) 00:11:25.05ID:SZFpptjM
334


なんでや!阪神関係ないやろ!
0335nobodyさん2016/11/03(木) 00:14:03.81ID:???
>>328,329,332,333
webデザイナーとwebプログラマーを混同していました。混同していることがわかっただけでも大きな前進でした。
もう少し自分が何やりたいかを考えてみます。ありがとうございました。
0336nobodyさん2016/11/03(木) 19:15:34.27ID:2AD8+1eb
私は元創価の会員でした。
すぐ隣に防衛省の背広組の官舎があるのですが、
自分の家の窓にUSB接続のwebカメラを貼り付けて、そこの動画を撮影し続け、
学会本部に送っていました。

別に大したものは写っていません。ごみ出しとか奥さんが子供を遊ばせている所とか。
官舎が老朽化して使われなくなってから、
今まで法人税(うちは自営業です)をほぼ払わなくても済んでいたのが、
もう守ってやれないのでこれからは満額申告するように言われました。
納得がいかないと言うと、君は自業自得で餓鬼地獄に落ちる、
朝夕南無妙法蓮華経と三千回ずつ唱えて心をきれいにしなさいと言われ
馬鹿らしくなって脱会しました。

それ以来、どこへ行くにもぞろ目ナンバーの車につけまわされたり大変な日々です。
全部自分の出来心から起きたことで、どこに訴えるわけにもいかないのですが、
なんとかあの人たちと縁を切って新しい始まりを迎える方法はないんだろうか。
0337�@2016/11/05(土) 01:03:25.46ID:/n6BEXdW
/home/{user_name}/www
.htaccess に以下のコードを書いています。

SetEnvIf Host "^www\.patapata\.net$" hos_ok
SetEnvIf Host "^patapata\.net$" hos_ok
order deny,allow
deny from all
allow from env=hos_ok
0338�A2016/11/05(土) 01:04:26.00ID:/n6BEXdW
さくらインターネットで
www配下に patapata.net へアクセスさせる為のディレクトリしか
作成していなかったので、これまではこれでよかったのですが

テストコードを直書きしてブラウザからさくらインターネットのサブドメインからもアクセス
できる様にしようと思っていますが。
0339�B2016/11/05(土) 01:06:34.05ID:/n6BEXdW
aaa/test-code/index.php
↓ ブラウザからはこんな感じでアクセスしたいです。
0340nobodyさん2016/11/05(土) 12:44:54.07ID:???
もうちょっと分かりやすく書いてくれる?
0341nobodyさん2016/11/05(土) 13:00:22.58ID:???
テストだったら自分のIPならOKにしちゃう
0342nobodyさん2016/11/07(月) 11:55:19.06ID:???
古いコードを見ていて知ったのですが
foo;
のように未定義の変数を$なしで記述する方法に名前はありますか?
0343nobodyさん2016/11/11(金) 00:31:34.65ID:NJy7MIUs
PHP って人気ないの?
0344nobodyさん2016/11/11(金) 06:21:08.35ID:???
昔ほど人気はないけど
まだまだシェアは高いほう
0345nobodyさん2016/11/11(金) 22:06:51.01ID:???
$searchFilterClassName = SearchFilters::class.'\\'.$classNames[$key].'SearchFilter';
$searchFilter = new $searchFilterClassName();
$searchFilter->filterAll($query, $requests);

こんな感じで呼び出すクラスを動的に変更してるけど、もしかしてバッドプラクティスになる?
0346nobodyさん2016/11/11(金) 22:10:27.95ID:???
全然普通の処理だけど、
命名が気持ち悪い
0347nobodyさん2016/11/12(土) 08:19:25.44ID:???
>>346
どこが気持ち悪いのですか?
0348nobodyさん2016/11/12(土) 08:29:00.73ID:???
例えば休日のお昼にレストランに行って「名前を書いてお待ち下さい」と言われたら
「直江山城守従五位下藤原朝臣兼続」と律儀に書きそうな所
0349nobodyさん2016/11/12(土) 08:40:20.36ID:???
>>348
やっぱり冗長的すぎますか
具体的にどう略しますか?
0350nobodyさん2016/11/12(土) 09:10:45.07ID:UTGbJvCc
案件はJAVAが一番多くて次にPHP
PHPも進化しててそう簡単には廃れないと思うよ
フレームワークなんてクラスと継承使いまくるし昔とは全然違う
JAVAっぽい感じすらある

もし他のやるってならrubyかパイソンかJAVAかな
PHPは簡単に始められるということで人によってレベルに差がありすぎる
フレームワークでクラス使えてDBやApacheまで理解して使えるならJAVAプログラマーと変わらないレベル
0351nobodyさん2016/11/12(土) 09:31:50.95ID:???
phpってechoするだけの言語と思ってたらいつのまにか抽象クラスとか実装されてて驚いた
0352nobodyさん2016/11/12(土) 10:24:09.54ID:???
>>349
命名は、スコープを意識した方が良い。
例えば、$searchFilterClassName は目的のクラスをnewする時にしか使わないんじゃない?

そうすると、その変数の必要有効範囲は2行しかない。
もし、他の場所でクラス名を知りたければ
$searchFilter内で定義済み定数 __CLASS__ を使って参照できるから。

そんな、その場限りの変数に仰々しい名前をつけるのは無駄な上に
全く別の人がコードを読む時には
いかにも意味がありそうな命名なので追いかけてみたら、その場所でしか使っていなかったとかで
大して意味が無い余計な情報になってかえってコードが読みにくい。

そんなのは$classNameで十分。
俺は「使い捨てだ」ということを強調するために場合によっては1,2文字変数を使うこともある。
0353nobodyさん2016/11/12(土) 11:43:15.72ID:???
>>352
なるほどありがとうございます
0354nobodyさん2016/11/12(土) 11:53:15.24ID:???
>>353
長い開発経験の中で出した、あくまでも俺の答えだから、そうは思っていないやつも居る。
だから「絶対」ではない。個人的意見だと思ってもらって構わない。

ただ、クソコードだなぁと思うコードの半分は
使い捨ての変数に$youAreFuckNSonOfABichみたいな命名をしている特徴がある。
Javaでプログラムを学んだJava脳の奴に多い。

もう半分のクソは本当にただのクソで、いかにもPHPerといったコード。
0355nobodyさん2016/11/12(土) 12:03:17.81ID:UTGbJvCc
>>352
うちのリーダーか?笑
使い捨て関数使ってるけど開発効率考えたらそれが良いと思う
使い回して深く追う可能性のあるものだけちゃんと名前付けておいた方が良いね
0356nobodyさん2016/11/12(土) 12:07:06.42ID:UTGbJvCc
他人や後の人が見る可能性が高いものはちゃんと名前つけて
自分やその時の現場のメンバーだけ使うものは一文字で良いだろうね
何かしらのツールで共有しておけば良い
0357nobodyさん2016/11/12(土) 12:43:16.19ID:???
お前のリーダーじゃないが、普通の頭の人はそういう結論出すよ。

他人が書いたコードリーディンングする時、重要なのは「その変数が何であるか」

「何が入っているかが分かる」事のみに着目して長ったらしい名前をつけられると、
ほんの数行先で出てきた変数が、
前に出てきたそれと同じなのか違うのかが把握できない。

大体、1つの処理単位で利用する変数はにた名前になりやすいから
名前が長いと余計わかりづらい。

人間が一目で判別できる文字数は5,6文字が限度だろう。

「その変数が何であるか分かる」ってことと「その変数に何が入っているか分かる」ってことはイコールではなく、
必要なのは「何が入っているかわかる」ことではない。
0358nobodyさん2016/11/13(日) 01:59:25.88ID:???
本読みなさいってことだな
0359nobodyさん2016/11/13(日) 09:57:04.08ID:???
変数追うってのも関数がファットな証拠なんだけどね
0360nobodyさん2016/11/13(日) 13:08:17.48ID:???
>>359
PHPはそんなコードばっかなのよ。
0361nobodyさん2016/11/13(日) 14:33:14.76ID:???
変数を追うどころか、ヒアドキュメントで書かれたSQLが500行以上になってるクソコードを引き継いだことがあるぜw
0362nobodyさん2016/11/13(日) 15:27:12.88ID:???
echoで文字列を出力する時、カンマとピリオドどちらでつなげればよいでしょうか?
0363nobodyさん2016/11/13(日) 16:12:35.87ID:???
echo $fire.'unko'
echo "{$fire}unko"
0364nobodyさん2016/11/13(日) 19:55:24.39ID:???
イメージ的にドットは
$c = $a. $b;
echo $c;

カンマは
echo $a;
echo $b;
0365nobodyさん2016/11/13(日) 21:06:29.54ID:???
条件でdefinedしてからdefineするコードって、二重定義のエラーを防止するためにやってるんでしょうけど、
これって意味あるんですか?
定数がすでにあった場合定義されませんが、期待している値じゃなかったらバグの原因になるだけなので、
逆にエラー出したほうがいいと思うんですが。
0366nobodyさん2016/11/14(月) 01:32:44.29ID:???
だれかほかの人が上書きしてもいいですよというサイン
■ このスレッドは過去ログ倉庫に格納されています