ベストアンサー php クラス 2021/04/30 17:47 phpのクラスを使ったwebアプリについて質問です。 phpでクラスの勉強をしたですが、クラスを使ったいいwebアプリを思い付きません。 なにかアイディアをもらえませんか? みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー hogehoge78 ベストアンサー率80% (433/539) 2021/04/30 20:53 回答No.1 Webアプリの表側(HTMLとか)で表現する部分ではあまり出番はないかもしれないですね。 かといって、MVCモデルのいわゆるオレオレフレームワークを作る、というのも少しハードルが高いかもしれません(設計がモノを言うやつ) ついては、オブジェクトの三大要素(継承、カプセル化、多態性)を意識したライブラリ、みたいな形のものを作ってみてはいかがでしょう。 例えば、ページにアクセスするたびにユーザが何時何分にどのページを閲覧したかを記録するロガーを、 ・ログをどこに保存するのか ・どのようなインターフェースを持っているのか を意識して作る。 interface LoggerInterface { public function write(); } といったインターフェースを作って class TextLogger implements LoggerInterface; ↑テキストファイルにログを記録する class MySQLLogger implements LoggerInterface; ↑MySQLにログを記録する みたいな感じで作るとオブジェクト指向っぽいことができるかなと。 まぁ、そういう地味なのだとテンションが上がらない、Webアプリが作りたいのだ、ということであれば、ゲームブック的なものとかは面白いかもしれないですね。 (1) キャラクターを選択する (2) 画面にテキストを表示する (3) 画面下部に選択肢を表示する (4) 選択肢によって次画面に遷移後、テキストが変化する。 (1)のキャラクターはHP(ライフ)を持ち、間違った選択肢によってダメージを受けたりする。また、敵と戦うなどの選択肢の場合には、設定したATK(攻撃力)パラメータで次画面が変化するなどが行われる。 (3)の選択肢は(1)に設定されている職業パラメータなどによって変化する。 などといった出来事をクラスのプロパティに設定したり設定ファイルから読み出したりとかといった感じで、実装すると。 今回の関心ごとにない画面遷移するときのステータス管理はセッションにオブジェクトごとぶち込むとかCookie使うとか、雑でもよいのでいったん実装してしまう、みたいな。 いろいろ書きましたが、正直、オブジェクト指向って設計の問題なので、Webアプリを作るぞ、といった段階では使っても使わなくても実装自体はできてしまうので、どんだけ設計をちゃんと考えるか、だったりします。 ピンとこない場合は、一旦自分の作りやすいように全部実装した後で、クラスに置き換えて修正するのを繰り返してみる(リファクタリングってやつですね)、しかないかな、と思います。 長々と失礼しました。 質問者 お礼 2021/05/03 08:55 詳しくありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発PHP 関連するQ&A phpのクラスについて教えてください phpのクラスについて教えてください クラスについて調べても全くわかりませんでした 基礎から教えてください PHPのクラスについて教えてください PHPを初めてクラスという言葉が出てきました。 書き方はわかったのですが、クラスを使用するとどのようなことが便利なのでしょうか? クラスを使用することによるメリットを教えてください。 できれば例えを出して頂けると嬉しいです。 よろしくお願いします。 phpでのクラスについて php初心者です。 最近クラスについて学んだので、実際に使ってみたいと思っています。 $comment[a] = "aaaa"; $comment[b] = "bbbb"; $comment[c] = "cccc"; こんな感じで、画面に表示する文章を連想配列にして格納していたんですが、これをクラスにしてまとめてみたいと思ってるんですけど、どういう感じにすると良いんでしょうか? ちょっと初歩的なクラスの質問だとは思いますが、どなたか教えてください。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム PHPのクラスについて PHPでクラスを多用すると処理が重くなるといわれたのですが、実際のところどうなのでしょうか。 他のオブジェクト指向言語のようにクラスを作ってしまって問題ないのでしょうか。 よろしくお願いします。 PHPのクラス名の付け方 PHPを勉強中です。 タイトルのとおり、クラス名の付け方をどのようにしたらよいでしょうか? ネットで探しても、いい案がないようです。 Javaでは、ドメイン名を逆にしてパッケージをつけます。 これで世界中でユニークになります。 例えばユーザ情報のクラスということでUserとクラス名をすると、 他の人が作ったクラス名と衝突する恐れがあります。 これを回避するのにクラス名のルールがありますでしょうか? PHP5でセッションやクラスについて PHP5でセッションやクラスについて、業務で対応できるレベルまで勉強したいのですが、何か取っ付きやすいサンプルや書籍などご存知の方、教えてください。 session_registerなど、何に使い、何にメリットがあるのか、わからないレベルです。 php クラス クラスの勉強をしているのですが、 記憶寿命をfunctionの中で完結させsample2以降でも同じ変数などを使えるようにするため定義済み関数内でクラスを処理したいのですが下記のエラーが出てしまいます。 functionの中でクラスを簡潔させるにはどのようにすればよいでしょうか?また、これはなぜエラーが起きているのでしょうか? function sample1(){ $pr=new parson; $pr->name="鈴木"; $pr->age=56; print $pr->getname(); print $pr->getage(); class parson { public $name="鈴木"; public $age=56; function getname(){return $this->name;} function getage(){return $this->age;} }} sample1(); Fatal error: Uncaught Error: Class 'parson' not found in hoge/class.php:11 Stack trace: #0 /hoge/class.php(27): sample1() #1 {main} thrown in /hoge/class.php on line 11 クラス構造と継承のありかた? PHP初心者で勉強中の者です。 多少、長文気味ですがアドバイス頂けると幸いです。 環境は、レンタルサーバで、php ver 5.2、MySQL ver 5.0、ブラウザ IE8(最新ver) 質問1 : index.php上で以下の処理を毎回(webにアクセスするたび)行っています。 1.require_once で各phpファイルを読み込み(全てクラスファイル) 2.new で読み込んだクラスをインスタンス化 3.自作関数を実行(動的なhtmlを出力) この様な繰り返し処理は、webプログラミングとして典型的なのでしょうか。 webによっては機能(メールやプロフィール)毎にindex.phpを設けているとも聞いています。 質問2 : 質問1の2や3で必要なクラスオブジェクトを引数として渡している現状ですが、これを効率化(引数の省略)させようと、セッション(serialize、unserialize)へと移行中です。勉強不足であり今ひとつ実装出来ていませんが、共通変数を設けて使い回す構造(最上位クラスのpublic変数に格納?)とどちらが現実的でしょうか。 以上、お願いします。 PHPにてクラスを配列にすることは可能でしょうか。 PHPにてクラスを配列にすることは可能でしょうか。 環境はPHP5です。 現在下記のようなクラスを作成しました。 class Ary_c { var $v1; // コンストラクタ function Ary_c() { $this->v1 = "test"; } } このクラスをC++言語などで出来るような、 クラスの配列として扱いたいのです。 C++だとたとえば10個の要素があるクラスの配列は Ary_c t[ 10 ]; みたいな感じで宣言できます。 こういったことをPHPでやることは可能でしょうか。 PHP4、PHP5 1ファイル複数クラスのルール とあるPHP4で書かれたスクリプトを見ていたら、1つのファイルに複数のクラスが書いてありました。 1つのファイルに1つのクラスを推奨という記述は見かけるのですが、 PHPの仕様としてはどんな感じになっているのでしょうか? 「javaで同一ファイル内にpublicなクラスを複数作成できない」てのを見かけたのですが、PHPにはこんなルールはあるのでしょうか? また1ファイル複数クラスの記述に関して、PHP4とPHP5で、違いがあれば 知りたいです PHPコードのクラス化と呼び出し方 以前にも同じ質問をしましたが、回答を締め切ったため再度質問します。 現在、タイトルの通り「クラス化と呼び出し方」について奮闘しています。 内容としては、[index.php]から[Message.php]へパラム値を渡し、値によってメッセージ文字列を表示するという簡単な処理をクラス化したいのですが、どうも期待する動作をしてくれません。 値は返ってきているように見えますが、なぜか「Object」となっています。本当は「test」じゃないといけないのですが・・・ 何が悪いのかご指摘を頂ければ嬉しいです。 以下に現在作成中のコードを載せます。 --------------------------------------------------------------- [index.php] -<?php - include_once("message.php"); - class test extends message { - } - - $index = new test("1"); - print $index; - ?> ------------------------ [Message.php] -<?php - class Message { - public function _construct($ErrorID) { - $this -> ErrorID = $ErrorID; - } - - function ErrorMessage() { - switch($ErrorID) { - case 1: - $str = "test"; - return $str; - default: - print("Error:予期せ-ぬエラーです。管理者へ連絡して下さい。"); - exit; - } - } - } -?> --------------------------------------------------------------- phpで使用不可のクラス名 調べてみたのですが、情報が見当たらなかったため、質問させていただきます。 php5.3でevalというクラス名を付けて実行しようとしたのですが、エラーが発生しました。 phpではクラス名にも予約語などの使用不可なものがあるのでしょうか? 宜しくお願い致します。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム PHPでデータベースを扱う際に思う事 お世話になります。 PHPでMySQLのデータベースを操作することが多いですが、MySQLiクラスやPDOなどのオブジェクト指向のよい道具がそろっていることを考えれば、自分でデータベースを扱うためのクラスを独自に作ることはほとんどないように思われます。 データベースを扱わないようなアプリの開発では自作のクラスが必要となることがあるかもしれませんが、皆さんはどのようにお考えでしょうか? データベース関連で使えるような機能で、自作する必要がありそうなクラスのアイデアなど、何かヒントを頂けると有り難いです。 PHPとは、何をするための何なのですか? 今、Webを勉強している者です。 HTMLについてはそれなりに理解してきつつあるのですが、 いまだ、CGIとかASPとかPHPとかDなんとかかんとか、とか分からないコトバが出てきて悩みます。 PHPとは、いわゆるひとつの何なんですか? HTMLのような言語? それとも、なにかの手法? PHPとはweb上で何ができるのですか? どうかお教えください。 宜しくお願いします。 pythonとphpにおけるwebアプリ つい先日からpythonでwebアプリを作るための勉強を始めました。 phpはブラウザから直接ファイル名へアクセスすると、htmlを返す単純明快な仕組みでしたが、 pythonの場合は、WSGIでブラウザからのアクセスを待ち受けて、urlでルーティング?する 仕組みなようで、phpとだいぶ勝手が違い戸惑っています。 pythonでwebアプリを作るとなると、こういった処理が普通なのでしょうか? それとも、phpのようなブラウザから直接目的のファイルへアクセスして、htmlを返す ような使い方もあるのでしょうか? アドバイス宜しくお願いします。 PHP5でクラス定数が使えますが PHP5でクラス定数が使えますが 以下のようにFで A + Eや A | Eなどとすると、 Parse errorとなります。 クラス定数は数値、文字列、配列のみで、組み合わせは不可という仕様で良いのでしょうか? PHP5の仕様書というものはネット上で存在しているのでしょうか? 英語でも構いませんので、ご存知の方教えてください。 class Test { const A=1; const B="2"; const C=array(3); const E=4; const F=A+E; // ここでエラー } この場合の対策ですが、素直にPHP4のように defineを使えば良いでしょうか? PHP クラスの中にクラス PHPでクラスの中にクラスを指定するのは不可能なことなのでしょうか? <例> name.php <? require("list.ini"); $list = new Select; $list->doSelect($a); <中略> ?> list.ini <? class Select{ function doSelect($qu){ require("col.ini"); $col = new Col; $col->doCol($ab,$ac); <中略> } ?> col.ini <? class Col{ function doCol($a,$b){ <中略> } ?> とすると Fatal error: Cannot redeclare class エラーがでます。 不可能なのでしょうか? よろしくお願いします。 PHPが分からない 最近、WEB系の仕事をする事が多くなってきました。 しかし、htmlとcssは分かるんですけど、PHPが全く分かりません。 独学でPHPをマスターする気持ちはあるんですが、すぐつまずいてしまいます。 独学でPHPを覚えた方はどのような勉強方法で覚えましたか? お教え下さい。 宜しくお願い致します。 phpのクラスについて phpで会員制サイトの制作を勉強しています。 データベースへはPDOで接続しています。 MySQLデータベースを使用しています。 現在、クラスを作成してみようとオブジェクト指向について学習しています。 試しに、既に作ってあった、POSTされた文字列をhtmlspecialcharsやfilter_inputするようなセキュリティやNoticeエラー対策に使うプログラム関数を class Checkのメソッドとしてまとめようとしています。 関数にしていたときは正常に動いたのですが、 クラスのメソッドにするとFatal error: Cannot use object of type Check as array in ~というエラーが出てしまいます。 恐らく、引数の受け渡し($_POSTの値の受け渡し)の時点でうまくいっていないのか、 私的には、メソッド結果の受け取りがあまり理解できていないので、 メソッド結果の値を配列で返すのがうまくいっていないのだと思います。 <関数> function postFilter($before) { foreach($before as $key=>$value) { $after[$key] = filter_input(INPUT_POST, $key); } return @$after; } *呼び出し* $post = postFilter($_POST); $email = $post["email "]; <クラス> class Check { public function エスケープ処理 { エスケープ処理のメソッド } //POSTで受け取ったものをfilter_inputでフィルタリング public function filterPost($before){ foreach($before as $key=>$value) { $after[$key] = filter_input(INPUT_POST, $key); } return $after; } ・ ・ ・ } *呼び出し* $post = new Check(); $post -> filterPost($_POST); $email = $post ["email "]; そもそもクラス化する必要がない気がして、関数のままにしておこうかと思ったのですが、 オブジェクト指向はどのプログラムを学ぶにあたっても、重要だと思い、 わからないまま放置したくないので質問しました。 添削いただけませんでしょうか? よろしくお願いします。 PHPでセッションに入れたクラスの変数が消える こんにちは。 PHPでセッションを使っていて困ったことが怒りました。 セッションに入れたクラスインスタンスの中の変数が消えます。 一回目に参照したときは残っていますが、 2回目アクセスした時には無くなってます。 クラスインスタンスのメンバー変数に文字列など、PHP標準のものは残ってますが、メンバー変数にインスタンスを入れると、消えることが判明しました。 これはなぜですか?? よろしくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
詳しくありがとうございました。