16/03/09 15:45:58.43 zr//P7+1.net
そんなことよりどんなアプリ作って儲けるかを考えたい。
ちなみに俺は独学クソコードで一昨年作ったアホアプリで500万しか稼げなかった。
10年くらい前に作った学生以下の知能のとき作ったアプリは2000万以上稼げたのに最近めっきりダメだ。
951:デフォルトの名無しさん
16/03/09 16:37:37.49 EPlXKpIC.net
>>936
どういう販路で稼いだの?
952:デフォルトの名無しさん
16/03/09 16:38:49.98 H6Adcpz7.net
このスレの話題じゃないだろうに
953:デフォルトの名無しさん
16/03/09 21:59:31.10 v9Ad+UvV.net
だが、そこがいい。
954:デフォルトの名無しさん
16/03/10 02:03:46.03 K/dg4BoX.net
10年前はたぶん今よりサイトもアプリも少なかったんじゃね
競合が少ないから稼ぎやすいってだけ
955:デフォルトの名無しさん
16/03/10 02:29:43.50 I4fg8pde.net
初学者です。
変数の宣言や寿命について質問します。
(1)
他の動的言語と同様、PHPは変数宣言しなくてもさくっと使えるのがメリットだと思いますが、
あえてローカル変数を明確に宣言したいときは、どのように記述すれば良いでしょうか。
もし変数宣言を強制する方法があれば、それも併せてお願いします。
(2)
関数以外の { } ではスコープが発生しない(?)と聞いたのですが
for等である程度複雑な処理をする場合は、他の言語よりも気持ち細かめに関数化するのが良いのでしょうか?
956:デフォルトの名無しさん
16/03/10 02:43:41.27 WPKFXTBi.net
perlのlocalやjsのletのようなものはphpにはないけど別に問題ないね
957:デフォルトの名無しさん
16/03/10 02:49:37.62 I4fg8pde.net
無いですか。ありがとう。
無いなら無いなりに、こういう書き方をしてるよってのはありませんか。
958:デフォルトの名無しさん
16/03/10 03:07:58.90 uzgEooUV.net
無いからというわけではなく、他の言語でも同様だけど
変数の使い回しをしないようにするくらい。
逆に、使いまわすことが明確であるような作業変数を作り、かつそれが参照であるような場合は必ずunsetする。
参考: URLリンク(php.net)
あと、個人的には関数化の基準は言語に依存しない。(最適化の段階を除いて)
959:デフォルトの名無しさん
16/03/10 03:09:36.40 AX52NT3y.net
>>943
スクリプトの先頭に
error_reporting(E_ALL);
これで怒られたら、そこで考えなよ
960:デフォルトの名無しさん
16/03/10 10:15:34.23 zqa8fCQ8.net
>>943
一時変数みたいのは使い終わったら unset するようにしてる。
全部が全部じゃないけど、多少なりともサイズの大きくなるやつは。
自分でスコープの終わりを明示するイメージ。
つか { } でのスコープの区切りは欲しいけど、それやるなら使用前の変数宣言が必要になるから php の思想とは合わないんだろうね。
961:デフォルトの名無しさん
16/03/10 11:09:07.15 kGRYisxx.net
ローカル変数を明確にするよりもグローバル変数を極力使わないようにする。
そのために関数化したりオブジェクト指向化するのも有効な手段。
あと区別するために変数にprefix付けるとかあるけどお勧めしない。
962:デフォルトの名無しさん
16/03/10 14:23:56.13 8TSnl84z.net
グローバル変数使うと何がダメなの?
963:デフォルトの名無しさん
16/03/10 14:51:27.94 ES1Z+z/1.net
>>948
自分で「あ、こりゃダメだな」と思うまでは使ってよし
964:デフォルトの名無しさん
16/03/10 15:00:08.59 V5fpOGLe.net
includeしたりしなきゃ特に問題はない
965:デフォルトの名無しさん
16/03/10 19:34:54.92 8TSnl84z.net
>>950
includeすると何がダメなの?
966:デフォルトの名無しさん
16/03/10 20:28:02.26 V5fpOGLe.net
変数名かぶった2つのファイルをincludeした時のことを考えれ
967:デフォルトの名無しさん
16/03/10 22:16:45.03 9EQi99EP.net
ごめん、2ファイルの純情な感情の事なんか考えたくない。
968:デフォルトの名無しさん
16/03/10 22:37:16.30 hp2GaphC.net
>>952
IDEが検知してくれるからへーきへーき
969:943
16/03/11 00:06:40.14 a6R8C1/e.net
変数の宣言等について質問した>943です。
ありがとう。
>>945
開発中は必ず記述するようにクセつけるようにします。
>>944>>946
unsetで寿命を明示するのは良いですね。
>>947
Cだったと思いますが、グローバル変数には g_ を付ける、なんて規約を見たことがあります。
あんな感じですかね。
970:デフォルトの名無しさん
16/03/11 06:46:23.06 i2cGi8Gp.net
>>952
すまんがちょっと教えてくれ
includeしただけでグローバル変数がダブるってどんな状況?よくあるもの?
971:デフォルトの名無しさん
16/03/11 09:27:42.09 N+8Oop6J.net
>>956
あちこちから拝借した直接関係無いライブラリでたまたま同じグローバル変数名を使ってるとか。
DBコネクションとかファイルポインタとか�
972:Aグローバル変数にしたそうで名前もダブりそうなのなんていろいろあるじゃん。 C みたいにグローバル変数のスコープをファイル内に限定できれば気軽だけどな。 PHPに限らずJSなんかだと心当たる人多いんじゃね?
973:デフォルトの名無しさん
16/03/11 09:49:44.67 vQZosf1d.net
>>952
問題ってそれか…
それなら全く問題ない
さすがにそこまでアホなことしない
974:デフォルトの名無しさん
16/03/11 13:27:06.01 Juk+9rAm.net
あんな質問してる時点でアホ
あらゆる状況を想定できないとプログラマー向いてない
975:デフォルトの名無しさん
16/03/11 19:47:48.46 i2cGi8Gp.net
>>957
違う
includeしただけでダブるケースなんだから、
関数やclassその他の定義の内側でglobal $var;してるのではなく
グローバルスコープで直接処理書いてるってことじゃん
読んだだけで副作用出るライブラリってことにならんか?
どっかから拾ってきたライブラリじゃなかったとしても
普通、呼び出されたファイル自体だけがグローバルな処理書いて
他のファイルは関数・class等を提供するだけにとどめるもんじゃないんか
976:デフォルトの名無しさん
16/03/11 20:30:55.79 N+8Oop6J.net
>>960
ライブラリが提供する一連の機能(function)で引き回す情報をグローバルに取るケースについて言ってるが、
そういうには class化して閉じ込めてしまえよってのが元々の話なんじゃないの?
なんか想像力が足りてない気がするよ。
977:デフォルトの名無しさん
16/03/11 20:42:29.60 a6R8C1/e.net
グローバルに注意しないとそういうことが起こるよ、って例示なんだから
広く普及しているライブラリはその対策がなされてるってことよね?
978:デフォルトの名無しさん
16/03/11 21:15:59.18 i2cGi8Gp.net
>>961
その場合問題になるのはincludeではないだろう
・関数やclassの中で、global宣言によって特定のグローバル変数に設定などを放り込む
⇒ どのファイルに記述されているかは関係なく、includeも関係なく、特定のグローバル変数に依存していることが問題
・メイン以外のファイルの中で、グローバル領域で変数を扱っている
⇒ includeやrequireなどで読んだだけで(関数等の定義だけではなく)何らかの処理が行われることが問題
では後者が生じる状況、そうせざるを得ない状況はどんなものか?というのが自分の質問
979:デフォルトの名無しさん
16/03/11 22:25:26.80 FGOOX3Tv.net
>>956
名前空間の存在理由考えればそういう状況はある
いやあったといったほうが正しいか
今も間違ったプログラミングを覚えた初心者ライブラリ製作者とかはやらかしかねないけど
980:デフォルトの名無しさん
16/03/11 22:49:04.69 N+8Oop6J.net
>>963
後者のような話をどっから持ち出してきたの?
んでグローバル変数を限定した方がよいという理由とそれを分けて考えたいのはなぜ?
ちょっと考えれば問題の本質は変わらないことに気付きそうなもんだが。
まあその前者についての見解もいま一歩な気がするからどこか消化不良なんだろうけど。
前者の問題は関数が特定のグローバル変数に依存することではなく、共有の資源であるグローバル変数名を自分が独占している前提に立っていることだよ。
981:デフォルトの名無しさん
16/03/11 22:50:28.95 kGmCd3Ag.net
>>963
PHPをshtml風にテンプレートとして使う場合など後者の処理になりがち。
各ファイルでグローバル変数を使えば衝突することになる。
もちろん、これはとても悪い処理だよ。
982:デフォルトの名無しさん
16/03/11 22:56:53.29 kGmCd3Ag.net
質問しているように見えて単にこう主張したいだけだよね。
「他のファイルは関数・class等を提供するだけにとどめるもんじゃないんか」
これは確かにそうだけどね。
983:デフォルトの名無しさん
16/03/11 22:58:49.73 RA7SR1be.net
PHPにクラスなんてあったっけ
984:デフォルトの名無しさん
16/03/11 23:51:26.62 i2cGi8Gp.net
>>964
名前空間は基本的に変数は関係ない、よってグローバル変数とは直接関わりがない
>>965
956に対して「ライブラリが~~」とか
985:言い出すのがそもそもおかしい 「global宣言を乱用するとコードの見通しが悪くなる。include自体が問題なのではない」と言われれば、「なるほど確かに」と答えるが 発端は、話の流れからいって「なぜグローバル変数は悪いか」に真っ当な答えがないと自分が思ったからだ
986:デフォルトの名無しさん
16/03/12 00:00:48.74 A3MCNpsP.net
それと、include即globalを触る構成の例、さらにglobal宣言を使う「良い」例を
パッと思い浮かべられなかったんで、そこんとこも含めて聞いてみた
思い出せる範囲だとpukiwiki本家がglobalを使ってたなあ、ぐらい
>>964
ページのヘッダ出力とフッタ出力とメイン出力を分けてヘッダとフッタをincludeだけで済ますようなタイプか
987:デフォルトの名無しさん
16/03/12 00:01:29.22 V1lRWN9o.net
>>969
ライブラリの話はひとつのケースとして挙げてるわけで、そこから問題の本質を考えていけないお前の想像力が足りないだけだから。
コードの見通しの問題じゃない、どちらかと言えば管理の問題だ。
>>965 の一番最後の文を理解できるまで読み返せ。
988:デフォルトの名無しさん
16/03/12 00:01:58.59 Zbyfy48z.net
PHPにクラスなんてあったっけ???
989:デフォルトの名無しさん
16/03/12 00:01:59.35 A3MCNpsP.net
おっと3連投すまん わかると思うが>>969中の「>>964」は966と書き間違えた
990:デフォルトの名無しさん
16/03/12 00:14:45.12 9ZmKFi7/.net
>>972
そのやり方よりも、これこれこういうわけでクラスとはいえないんじゃないかっていうのを先に出したほうが展開がスムーズだよ。
991:デフォルトの名無しさん
16/03/12 00:17:44.14 A3MCNpsP.net
URLリンク(php.net)
phpにおいてclassと呼ばれているものは確かに存在している
992:デフォルトの名無しさん
16/03/12 00:39:36.68 Zbyfy48z.net
むぁぢかよ
普通にオブジェクト指向プログラミング言語じゃねぇか
993:デフォルトの名無しさん
16/03/12 01:30:32.54 V1lRWN9o.net
>>976
そういう書き方もできるというだけで、単なるごった煮と思えなくもない。
組み込み関数なんかを見るに、とにかくなんでも突っ込んでおけ的な。
994:デフォルトの名無しさん
16/03/12 17:10:01.12 yd6bZAt6.net
>>970
そう。そういう処理。ちなみにWordPressは、こうなってる。
グローバル変数-WordPressCodex日本語版
URLリンク(wpdocs.osdn.jp)グローバル変数
WordPressのコードの全体にわたって、いろいろな目的でWordPress固有のグローバル変数が使用されます。
WordPressが生成するデータのほとんど全部がグローバル変数に見られます。
注意:適切なAPI関数があればそれを使うのがベストです。グローバル変数を直接変更するのは避けましょう。
995:デフォルトの名無しさん
16/03/12 19:40:28.25 wBoLlEZv.net
>>977
一応JavaScriptよりはまともなClassではある。
まあごった煮なのは当然というか作ってる連中が
ごった煮を目指してます と明言してるしな。
996:デフォルトの名無しさん
16/03/12 19:45:21.07 0SfN7+lJ.net
JavaScriptはそもそもクラスベースじゃなくてプロトタイプベースですし
個人的には既存組み込み関数に対するオブジェクト指向インターフェイスを追加してくれると有り難いんだけど, まぁ面倒だろうしねぇ
997:デフォルトの名無しさん
16/03/12 19:46:52.58 Lp9XrA38.net
先生、レベルが下げ止まりません!
998:デフォルトの名無しさん
16/03/12 21:59:34.46 jgL6oJsP.net
データベースのTIME型(HH:MM:SS)に渡すために5桁~6桁の整数を送信しています。
送信確認画面でユーザーには(例えば)220000という数字を22:00に変換して表示させたいです。
<th>平日の活動時間帯</th>
<td>
<?=$weekday_begin_time."~".$weekday_end_time?>
<input type="hidden" name="weekday_begin_time" value="<?=$weekday_begin_time?>" >
<input type="hidden" name="weekday_end_time" value="<?=$weekday_end_time?>" >
</td>
解決策はないでしょうか?
999:デフォルトの名無しさん
16/03/12 22:18:44.37 jgL6oJsP.net
こんな感じの自作関数で実装できましたが、もっと簡潔な方法があれば教えてほしいです
function timechange($time) {
$time4digit = substr($time, 0, -2);
echo wordwrap($time4digit, 2, ":", true);
}
1000:デフォルトの名無しさん
16/03/12 22:24:09.17 jgL6oJsP.net
何度も連投すみません
上の関数だと6桁は正常に:で分割(12:34)になるんですが、
5桁だと上手くいきません。ご教授ください
1001:デフォルトの名無しさん
16/03/12 22:34:26.61 j4grSBgs.net
function timechange($time) {
$time = sprintf("%06d", $time);
$time4digit = substr($time, 0, -2);
echo wordwrap($time4digit, 2, ":", true);
}
1002:デフォルトの名無しさん
16/03/12 22:39:06.78 V1lRWN9o.net
>>984
最初に1000000を足して7桁に揃えてからやるとか、sprintf でやってみるとか?
sprintf ('%02d:%02d:%02d', $time/10000, $time/100%100, $time%100)
1003:デフォルトの名無しさん
16/03/12 22:41:02.88 V1lRWN9o.net
あーごめん、条件を適当に読み過ぎたw
無視するか拾えるものだけ拾って
1004:デフォルトの名無しさん
16/03/12 23:03:02.90 jgL6oJsP.net
>>985
成功しました。ありがとうございます。
sprintf便利すぎますね
1005:デフォルトの名無しさん
16/03/12 23:31:38.00 j4grSBgs.net
次スレ
スレリンク(tech板)
1006:デフォルトの名無しさん
16/03/13 02:21:29.73 MpEKJeeZ.net
クラスってどんな時に使うんでしょうか!!!
1007:デフォルトの名無しさん
16/03/13 03:01:44.79 9kqv0Cg0.net
使いたい時に使う
1008:デフォルトの名無しさん
16/03/13 05:10:49.45 MpEKJeeZ.net
>>991
じゃあてめえをぶん殴るのにも使えんのか?
なんてね(*ノω・*)テヘ
1009:デフォルトの名無しさん
16/03/13 06:43:19.88 ZQ9tZTy0.net
そういう時はイスを投げるんだよ
典型的には特定の処理に関わる関数や変数をひとまとめにしたいときに使う
たとえばphpからDBを扱うときによく使われる $dbh = new PDO($dsn); に出てきてるPDO、これclass
1010:デフォルトの名無しさん
16/03/13 08:17:52.84 th1TODZW.net
プログラマが投げるのはマサカリと決まっています。
1011:デフォルトの名無しさん
16/03/13 11:09:47.54 ULJgt6Ph.net
>>983
function timechange($time) {
$time = sprintf(
1012:デフォルトの名無しさん
16/03/13 11:12:07.74 ULJgt6Ph.net
function timechange($time) {
$time = sprintf("%06d", $time);
$h = substr($time, 0, 2);
$m = substr($time, 2, 2);
echo $h.':'.$m;
}
1013:デフォルトの名無しさん
16/03/13 13:14:43.79 WNHsfoP5.net
sprintf 使うなら素直に hh:mm で出せばいいじゃない。
sprintf ('%02d:%02d', $time/10000, $time/100%100,)
1014:デフォルトの名無しさん
16/03/13 15:35:19.10 kS6/ihj4.net
ume
1015:デフォルトの名無しさん
16/03/13 15:49:45.37 hhfCvQlY.net
runa
1016:デフォルトの名無しさん
16/03/13 17:47:07.69 th1TODZW.net
ほい
1017:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 119日 22時間 48分 59秒
1018:1002
Over 1000 Thread.net
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
──────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
URLリンク(premium.2ch.net)
URLリンク(pink-chan-store.myshopify.com)
1019:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています