事務員、プログラマーになるスマートフォン用の表示で見る事務員、プログラマーになる事務員がプログラマーになりました。この広告は、90日以上更新していないブログに表示しています。2017-03-23抽象クラスで遊んでみる2CodeIgniter3abstractなクラスを5つ作ってみました。ところでCI_Controllerを継承したMY_○○Controller.phpを5ファイル作ったら認識してくれませんでした。私のやり方が悪いのか何なのかわかりませんが、結局MY_Controller.phpの中に5クラスかいたら全部認識してくれました。あった画面設計からこの4つに分類。各画面には複数のsubmitボタンがあるので、その分岐処理も親クラスに実装しました。チェック・データの登録処理の4つのファンクション作成を強制されます。確認画面表示は何かやりたいことがあった時用なので、ほとんどの画面は空っぽになっています。親クラスでは子クラスの関数を呼び出す部分や、共通処理(重複起動チェック、権限チェック等)も記載しました。あとは画面のヘッダーやフッターの読み込みも全部親クラスに任せてしまったので、画面を作ってる最中はその画面の処理だけに集中できるようになりました。全体をルール付けられず苦労した!でもどんどん開発スピードが上がって楽しい!1ヵ月前に生まれて初めてプログラムをした時は1個画面作るのに1週間以上かかってたけど、検索画面なら1日で2~3画面作れるようになりました。いう話を開発経験者の方にしてみたら「そういうルールが少なくて自由度が高いのがCodeIgniterなんだけど・・・」と。22:45抽象クラスで遊んでみる2Tweet広告を非表示にするもっと読むコメントを書く2017-03-23IDEのコンソールにログを出したいNetBeansを使って開発をしています。先日、Javaという言語で開発している友人の環境を見せてもらうと、eclipseというIDEを使っていました。eclipseはIDEの下側に(コンソールというらしい)にログが出るんですよ。頭の足りない私は、自分が書いたSQL等を幾度となく見失っておりまして。先月MY_DB_query_builderを作成したときに身に着けた知識を生かして、SQLの実行時に変数とかが置き換わった後の実実行SQLをデバッグログに出すようにしています。ログファイルは日付で変わるので、探して開くの地味に面倒。eclipseのコンソールにときめいたわけです。NetBeansでデバッガ・コンソールを表示とやると、コンソールにはHTMLが出力されてしまい、CodeIgniterのログは出てくれません。ことから、ログファイルをまるでコンソールのような顔で開けばいいじゃない!という結論に至りました。これを実現するためには、ファイルの日付が変わってもらってはこまります。Logを出しているのはLog.phpというクラスのようだったので、これをMY_Log.phpとして拡張しました。拡張ファイルは今まで通り、application\coreフォルダの下に配置。write_logファンクションから、まずはファイル名を確定しているところを書き換えます。忘れたまま本番環境に入れてしまうと怖いので、開発環境(私しか開発してない)だけ変わるようにしてみました。}このままではlog_debugファイルがエラいサイズになってしまうので、2Mぐらいでバックアップしてくれるように書き加えます。}}後ろの処理が実はよくわからなかったのですが、$newfile=TRUEにしておけば良きに計らってくれるようです。これでログファイルをまるでコンソールのような顔で開いておけばあとはいい感じに計らってくれるようになりました。悩みはログが更新されても一番下までスクロールしてくれないことですが・・・世の中妥協も必要ですね。22:20IDEのコンソールにログを出したいTweet広告を非表示にするもっと読むコメントを書く2017-03-23抽象クラスで遊んでみる1CodeIgniter3前回勉強したabstractは、クラスだけではなくてファンクションにも使えるようです。Manualabstractクラスのabstractなファンクションは、子クラスで定義を強制する。何のために!?もう、気になって気になって。それで、無い知恵絞って「abstractな親クラスが子クラスにファンクション定義を強制して嬉しい事ってなんだろう」と考えてみた結果、もしかしたら、親クラスから子クラスのファンクションが呼べるんだろうか...という気になってきました。お子様クラスのコントローラー名/indexで普通に呼べてしまいました。!!!これって便利なんじゃないのかな。今のシステムは更新ボタンを押すと毎回確認画面が表示されるんですが、開発済みソースを見ると入力チェック以外はおんなじことをやってるんですよね。いうことは、確認画面を出す処理を親クラスに書いて、入力チェックするabstractなファンクションを作れば、毎回作るのは入力チェックだけでいいんじゃないんだろうか。いうことで、ちょっとabstractなクラスを作っていきたいと思います。$binds)のqueryで間違いないと思います。systemフォルダの中をあさってみるとCI_DB_driverというクラスにqueryファンクションが存在しました。実際の置き換え処理をしているのがcompile_bindsファンクションのようです。teratailで教えて頂いたサイト様を参考にCI_DB_driverを拡張しようとしたのですが、何度やってもうまくいきません。?を全部「あ」に置き換える処理にしてみても呼ばれてる気配がない。これはおかしい・・・。{abstractって...私が作ったクラスにはついてないけどなんだコレ。抽象クラスというらしいですが、説明を何回読んでもサッパリ意味がわかりません。わからないけど、要するにこれだけじゃ何もできなくて、継承しないと使えないもの?その観点から「CI_DB_driver」でファイルを全部検索すると↓こんなとこが見つかりました。}おぉ...名前からして$this-dbのdbの本体がこのCI_DBのようだ・・・・。CI_DB_driverを拡張しても何の意味もないのは実態はCI_DBで、継承してるのは拡張してない本体だからという呼ばれないのかも。CI_DB_query_builderを継承したMY_DB_query_builder作成。$sql;}最初にparentのファンクションを呼び出したので、?も置き換えてもらえました。置き換え処理は親クラスを真似したのでたぶん大丈夫。$escaped_valueをが配列かどうか判定している部分が何になるのか、さっぱりわかりません。親クラスがやってたので真似しました。これで目標は達成できましたが、abstractクラスというのが一体何のために使われるのかわかりません。興味がわいて調べてみたら、ちょっと面白そうだったので、次はそれに挑戦してみます。問題点編CodeIgniter3作っているのは社内用のシステムで90画面ぐらいある中の8画面がすでに作成されていました。環境はPHPでCodeIgniter3というフレームワークが使用されています。この辺の資料は、去年の11月ぐらいに中途で入ってわずか2週間で辞めた女性が残してくれていました。感謝感謝(辞めたくなる気持ち、わかるよ)最初に作るのは検索機能です。「オマエがうるさいから検索条件いっぱい用意してやったから」と言われるだけあって、設計書を見ると検索結果が画面外に出るようなことになってましたが「いらないし邪魔なんで^^」と削除。検索するためにはSQLというのを書かないといけないのですが、私が書こうとしたのがこんな感じ。$_binds)$bindsに入っている値が前から順番に$sqlの?部分に置き換えられて実行されるらしいです。私が欲しい検索条件は15個ぐらいあるんです(オッサンに邪魔とか言ったのに結局欲張った)でも検索条件って毎回全部入力するわけじゃないじゃないですか。そんな時にはWHEREに入れてほしくないんですが、ここをどういう風に書けばそうなるのかがわからなくて...。$_binds)これによって同じ検索条件を2回ずつ渡す必要が発生。結果、$_bindsの中身がズレたり足りなかったり、直したくてもどれがなんだかわからなくなったり。困った挙句にteratailというところで質問させてもらいました。teratail.com世の中は初心者に優しい。回答で情報を頂いたおかげで、無事に:id方式(シンボルというらしい?)に改造することができました。備忘録を兼ねて、まずはそのことを書いておこうと思います。※ちなみに既に開発済みだった8画面は、どうもCodeIgniter3の仲間に入っていないようです。ControllerもModelもなく1つのPHPファイルにバーーー!!と全部の処理が書いてあるようです。この時点の私は全部のソースがCodeIgniterの仲間だと思っています。問題点編Tweet広告を非表示にするもっと読むコメントを書く2017-02-16事務員、プログラマーになる。我が社の「魔境」と言われるシステム部門に異動になってしまいました。部署と言っても、50代前半の男性社員が1人しかいません。同族経営の気質の強い小規模な会社で、そのオッサンは「かつて大手システム会社に勤めてた」副社長の親族らしいです。このオッサンが曲者で、日本語が通じないことで有名です。何人も中途で人を雇ってもみんなすぐに辞めてしまう癖の強さに加え、全く使えないシステムを作るんです。結局Excelで別にデータを作って2重管理をせざるを得ない状態になっていました。「なぜデータを毎日入力しているのに予兆が見えなかったのか」ということがついに議題に上りました。公式の場で文句言う機会を得たのです!そしたら、曲者オッサンが言ったセリフがこちら。「トラブル発生でかかったコストと、この俺が必要かもわからない検索機能を付けるコストと、どっちがかかるとおもってるの?(笑)」なんか無性にイラっ・・・・。コスト(笑)とかいうなら、あのゴミみたいなシステム作るのにかかったお金が一番の問題だろ。「検索上限を超えています」と言われて何も画面に出なてこない検索画面ができました。今年に入って社長がやってきて。「みんなを助けると思ってよ!!」という経緯で、人身御供にささげられる運命になりました...。21:18事務員、プログラマーになる。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。