タグ付けされた質問 「php」

PHPに関する質問。これは、Web開発に特に適した、広く使用されている汎用スクリプト言語です。

3
Webサービスを使用するデスクトップベースのクライアントのオフラインフェールオーバーを実行する最良の方法は何ですか?
共通の問題を共有する次の3つのプロジェクトがあります。 Webシステム上にロジックが必要であり、RESTful Webサービスを介してそのようなシステムと通信するローカルアプリケーション(POSなど)が必要です。 私のソリューション 私が思いついたソリューションは、デスクトップアプリケーションにメッセージキューを実装して、サービスがオフラインである間、より正確には非同期メッセージキューを操作を保存することです。しかし、それは簡単な部分です(もしそれが最良の解決策であるなら)。また、データの同期と競合の解決にも関心があります。 利害関係者によるレポートと監視にはWebアプリが必要であり、Webサービスは複数の施設の要求を処理するため、メインシステムはWebベースである必要があります。 デスクトップクライアント(できればシン)はJava(より具体的にはNetbeans)で実装され、WebシステムはSymfony2で実装されます。2つのプロジェクトにはクライアントのハードウェア統合が必要であるため、Webテクノロジー(Appcelerator Titaniumなど)を使用してデスクトップアプリケーションを作成することは大きな苦痛になる可能性があります。 私の質問 最小の労力で最大の効率を意味する、拡張可能な優れたソリューションとは何ですか(ローカル操作用にバックアップサーバーを購入するなどの追加コストは不要)。 他に誰がこれに対処しましたか?どのようにして問題を解決しましたか?どんな教訓を共有できますか? 同期はどのように対処しましたか? 編集:ポイント#3で私の質問に不足している部分を追加しました

2
Staticは悪いですが、Factoryパターンはどうですか?
私はTDDプロジェクトに参加しているので、この種の開発に関係する優れた慣行に可能な限りこだわります。それらの1つは、静的およびグローバルを可能な限り回避することです。 私はこの問題に直面しています。「オプション」(追加の「マイクロ記事」)をリンクできるオブジェクト「記事」があります。 私はすべてが非常に切り離されているため、基本的にオブジェクトごとに1つのクエリを作成する必要があるため、非生産的であるか、あまり多くのクエリを生成しない良いアプローチを持つ方法を理解することはできません。 私の実際の観点から、3つのオプションがあります。 1)記事内のビルド: class Article { //[...] public function getArrOption(){ //Build an array of Options instance. //return an array of Options. } } プロ:まっすぐ進む 定数:保守性:articleオブジェクトには、Optionオブジェクトの構築ロジックが含まれるようになりました。これはおそらくコードの重複につながります。 2)optionFactoryを使用する class Article { //[...] public function getArrOption(){ return OptionFactory::buildFromArticleId($this->getId()); } } プロ:ロジックの構築はArticleクラスの外にありません Const:「静的なモックは難しい」というルールを破り、Articleクラスのテストを難しくしています。 3)すべてのロジックを分離します。 //Build the array of Option instance in a …
13 php  tdd  static-access 

4
PHPのマジックメソッドのコンテキストでの `trigger_error`と` throw Exception`
私はtrigger_error、魔法のメソッドのコンテキストでの正しい使用法(もしあれば)について同僚と議論しています。まず、この1つの場合を除いて、それtrigger_errorは避けるべきだと思います。 1つのメソッドを持つクラスがあるとします foo() class A { public function foo() { echo 'bar'; } } まったく同じインターフェースを提供したいが、すべてのメソッド呼び出しをキャッチするためにマジックメソッドを使用するとします class B { public function __call($method, $args) { switch (strtolower($method)) { case 'foo': echo 'bar'; break; } } } $a = new A; $b = new B; $a->foo(); //bar $b->foo(); //bar 両方のクラスの応答方法は同じですfoo()が、無効なメソッドを呼び出す場合は異なります。 $a->doesntexist(); //Error $b->doesntexist(); …

5
サーバーにMercurialをインストールし、hg pullを展開することをお勧めしますか?
私はこの1か月間に新しい仕事に着手しましたが、コードのソース管理がないようです。彼らは、ホスティングプロバイダーがバックアップを使用していることに依存しています。 少し話した後、私は間違いなくソース管理を使うべきだと上司に確信させ、それについて短いセミナーを行った後、チーム全体が参加しています。彼らはMercurialが大好きでした。 だから今、これが私たちの仕事のやり方です: º----------BitBucket º---------/ º--------/ 私自身とhg pullBitBucketの他の3人の開発者が変更を加えてから、BitBucketに変更hg pushを加えます。 展開のために、誰かが最新のファイルを実稼働サーバーにFTPで送信する必要があります。 サーバーにMercurialをインストールし、hg clone(その後hg pull)を使用して実稼働時にバージョンを最新に保つことを考えていました。 º---push->-----BitBucket----<-pull-----º (production server) º---push->----/ º---push->---/ これはいいアイデアですか?目に見えない潜在的な落とし穴はありますか?ここで誰かが似たようなことをしましたか?大規模なPHPフレームワークアプリケーションをどのようにデプロイしますか(Moodleを使用しています)?

2
PHP変数の前にドル記号を付ける必要があるのはなぜですか?
すべてのPHP変数の前にドル記号(例:)を付ける必要があることを理解しています$someValue = 1が、これはなぜですか?なぜこのデザインの選択が行われたのですか? 私が尋ねる理由は、PHP変数がドル記号で始まる必要があると言ったときにガールフレンドがなぜ尋ねたのか、そしてなぜこの構文上の選択が行われたのかわからなかったことに気付きました。 何か案は?
13 php  syntax 

3
継承よりも合成
私は自分自身にソフトウェア工学を教えようとしていますが、私を混乱させる矛盾する情報に出くわします。 私はOOPと抽象クラス/インターフェースとは何か、そしてそれらをどのように使用するかを学びましたが、「継承よりも合成を優先する」べきだと読んでいます。構成とは、あるクラスが別のクラスのオブジェクトを構成/作成して、その新しいオブジェクトの機能を利用/対話することです。 だから私の質問は...抽象クラスとインターフェイスを使用しないはずですか?抽象クラスを作成せず、その抽象クラスの機能を具象クラスで拡張/継承し、代わりに、新しいオブジェクトを作成して他のクラスの機能を使用するだけですか? または、構成を使用し、抽象クラスから継承することになっています。両方を一緒に使用しますか?もしそうなら、それがどのように機能し、その利点のいくつかの例を提供できますか? 私はPHPに最も慣れているので、他の言語に移り、新しく習得したSEスキルを移転する前に、それを使用してOOP / SEスキルを向上させています。

3
依存性注入:どの時点で新しいオブジェクトを作成できますか?
私はPHPアプリケーションをリファクタリングしていますが、可能な限り多くの依存性注入(DI)をしようとしています。 私はそれがどのように機能するかをよく理解しているように感じますし、クラスがかなりスリムで堅牢になっているのを確かに見ることができます。 クラス内に新しいオブジェクトを作成するのではなく依存関係を注入できるようにリファクタリングしていますが、ある時点でいくつかのオブジェクトを作成する必要があります。つまり、dreaded newキーワードを使用します。 私が今直面している問題は、どの時点で実際に新しいオブジェクトを作成できるかということです。私は最終的にトップレベルのクラスになり、他に行く場所がないため、新しいオブジェクトを大量に作成するように見えます。これは間違っているように感じます。 ファクトリクラスを使用してすべてのオブジェクトを作成するブログを読んだ後、ファクトリを他のクラスに注入します。その後、ファクトリメソッドを呼び出すと、ファクトリが新しいオブジェクトを作成します。 これを行うことに対する私の懸念は、今では私のファクトリークラスがnewすべて自由になることです!ファクトリクラスであるため、これで問題ないかもしれませんが、ファクトリパターンとDIを使用する場合に固執するいくつかのルールはありますか、それともここから外れますか?

2
どうすれば自分のコーディングスキルを長続きさせることができますか?
この秋までに、私の2つの小さなWebサイトは、快適で快適に生活するのに十分な最小限/ゼロの入力で、月に合計約1200ドルを生成するはずです。 別のビジネスベンチャーに着手するのではなく、今後数年間、本当に良いことや、それを必要とする他の人々に役立つことをしたいと思っています。私は4年か5年を費やして価値のある目的に専念し、すでに持っているWeb開発とプログラミングのスキルを最大限に活用したいと考えています。 問題は、どこから始めればよいかわからないことです。私は自分自身の素晴らしいアイデアを持っていませんし、多くの大きな慈善団体に非常に懐疑的です。理想的には、誰もが無償で支援に集中している小さなプロジェクトを見つけたいです。 そのような小さな組織はありますか? プロジェクト/ウェブサイト/アプリのアイデアを持っている人はいますか? これは典型的なStackOverflow 2 + 2 =ではないことを知っていますか?タイプの質問とそれを削除したい人もいますが、IT業界の慈善的性質(SO自体を見てください)を考慮すると、これは現在またはキャリアのある時点で多くの開発者に非常に関連する質問です。日本の最近の出来事を考えると、この質問は、他の人が利用できるスキル/時間で他の人を助ける方法を探している多くの人々に特に関連しています。 これに関するあなたの考え/答えを読むのを本当に楽しみにしています、ありがとう
13 c#  java  php  javascript  jquery 

5
品質の改善を期待してコードをミニリファクタリングすることは有用ですか、それとも単に「コードを移動する」だけのメリットがありますか?
例 データベースからデータをロードし、HTMLマークアップを表示し、ルーター/コントローラー/アクションとして機能する「すべて」を行うモノリシックコードに出会いました。データベースコードを独自のファイルに移動するSRPを適用し始め、物事の命名を改善しましたが、すべてが見栄えが良かったのですが、なぜこれを行っているのか疑問に思い始めました。 リファクタリングする理由 目的は何ですか?役に立たない?利点は何ですか?モノリシックファイルはほとんどそのままにしておきましたが、作業を行う必要がある領域に関連する小さな部分のみをリファクタリングしたことに注意してください。 元のコード: 具体的な例を挙げると、このコードスニペットに出会いました。既知の製品IDまたはユーザーが選択したバージョンIDのいずれかで製品仕様を読み込みます。 if ($verid) $sql1 = "SELECT * FROM product_spec WHERE id = " . clean_input($verid); else $sql1 = "SELECT * FROM product_spec WHERE product_id = " . clean_input($productid) ; $result1 = query($sql1); $row1 = fetch_array($result1); /* html markup follows */ リファクタリング: この特定のコード部分を変更する必要がある作業を行っているため、リポジトリパターンを使用するように変更し、オブジェクト指向のMySQL機能を使用するようにアップグレードしました。 //some implementation details …


5
Web開発の役割のサーバーについて知っておくべきことは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 少しあいまいに聞こえるかもしれないので、もう少し説明してみます... 長年自営業の開発者であった後、私は現在商業的なWeb開発者の役割を探しています。サーバーとホスティングに関する私の唯一の経験は、FTPを介してアップロードし、CPanel / WHMを少し試してみることです。私が行っている役割は、Web開発のPHP、MySQL、HTML、CSSタイプの役割ですが、最近のインタビューでは、サーバーでの設定について質問を受けました。理想的ではありませんでした! 私以上のことを知らなければ、私が何を学ぼうとしているのかを正確に説明するのは難しいですが、それは基本的にウェブ開発者として知っておくべきサーバー要素だけなのでしょうか?Web開発者の場合、ファイルのアップロード以外にサーバーを扱うことはありますか?Subversion(SVN)やバージョン管理システムのようなものは、多くの場合、Web開発チームによってセットアップされていますか?

2
別のクエリで使用するために、クエリの結果を一時的に保存する方法は?
私はあなたが私を助けるかもしれないと思うこの問題を抱えています。 PS私はこれをどのように呼ぶかわからないので、誰かがより適切なタイトルを見つけたら、編集してください。 バックグラウンド このアプリケーションは、バス路線を検索するために作成しています。 バスラインは3桁の数字であり、一意であり、変更されることはありません。 要件は、ストップAからストップBまでの行を検索できることです。 ユーザーインターフェイスは、有効なストップ名のみを使用するようにユーザーにヒントを出すことにすでに成功しています。 要件は、ルートに直通線があるかどうかを表示でき、そうでない場合は2行と3行の組み合わせを表示できることです。 例: ポイントAからポイントDに到達する必要があります。プログラムは次のように表示されます。 ダイレクトラインADがある場合。 そうでない場合は、AC、CDなど、2行の代替コンボを表示します。 2行のコンボがない場合は、3行のコンボ(AB、BC、CD)を検索します。 もちろん、アプリはバスの路線番号とバスをいつ切り替えるかを表示する必要があります。 私が持っているもの: 私のデータベースは次のように構成されています(簡略化された、実際のデータベースには場所と時間などが含まれています): +-----------+ | bus_stops | +----+------+ | id | name | +----+------+ +-------------------------------+ | lines_stops_relationship | +-------------+---------+-------+ | bus_line | stop_id | order | +-------------+---------+-------+ どこlines_stops_relationshipのバスラインと停止の間の多対多の関係を説明します。 順序、ストップが1行に表示される順序を示します。すべての行が行き来するわけではなく、順序に意味があります(順序2のポイントAは順序1のポイントBの後に来ます)。 問題 ラインがルートを十分簡単に​​通過できるかどうかを確認します。両方のポイントを正しい順序で通過する単一の行を検索するだけです。 2/3行のコンボがあるかどうかを確認するにはどうすればよいですか?出発地の停留所と目的地の停留所に一致する行を検索し、それらの間に共通の停留所があり、ユーザーがバスを切り替えることができるかどうかを確認しようと考えていました。その停止をどのように覚えていますか? 3行のコンボはさらにトリッキーです。ソースの行と宛先の行を見つけましたが、次に何をしますか?ストップが2つある行を検索しますが、繰り返しますが、ストップをどのように覚えていますか? tl; dr クエリの結果を覚えて、再び使用できるようにするにはどうすればよいですか?これを単一のクエリ(1行のルートのクエリ、2行のクエリ、3行のコンボのクエリ)で達成したいと考えています。 注:誰かが私が持っているものとはまったく異なるアプローチを提案するかどうかは気にしませんが、私はどんな解決策も受け入れています。 …
12 php  mysql  routing 

3
MVC使用時のPHPでのエラー処理
私は最近Codeigniterを頻繁に使用していますが、気になるのはエラーを処理してユーザーに表示することです。乱雑になることなくエラーを処理するのが得意ではありませんでした。私の主な関心事は、ユーザーにエラーを返すときです。 関数から0または1を返し、if / elseを使用してエラーを処理するのではなく、例外と例外をスロー/キャッチすることをお勧めします。したがって、問題についてユーザーに簡単に通知できます。 私は例外から離れる傾向があります。数年前、大学の私のJava講師は「例外はプロダクションコードで使用すべきではありません。デバッグ用ではありません」と言っていました。私は彼が嘘をついていると感じました。 しかし、例として、ユーザーをデータベースに追加するコードがあります。プロセス中に、データベースの問題、重複エントリ、サーバーの問題など、2つ以上の問題が発生する可能性があります。登録中に問題が発生した場合、ユーザーはそれについて知る必要があります。 MVCフレームワークを使用していることを念頭に置いて、PHPでエラーを処理する最良の方法は何ですか。


4
単体テスト中にのみ使用されるメソッドを導入しても大丈夫ですか?
最近、ファクトリーメソッドをTDDしていました。その方法は、単純なオブジェクト、またはデコレータでラップされたオブジェクトを作成することでした。装飾されたオブジェクトは、いずれもStrategyClassを拡張するいくつかのタイプのいずれかです。 私のテストでは、返されたオブジェクトのクラスが期待どおりかどうかを確認したかった。単純なオブジェクトosが返されたときは簡単ですが、デコレータでラップされたらどうしますか? ext/Reflectionラップされたオブジェクトのクラスを見つけるために使用できるようにPHPでコーディングしますが、物事を複雑にしすぎているようで、TDDのルールにやや反対しています。 代わりにgetClassName()、StrategyClassから呼び出されたときにオブジェクトのクラス名を返すように導入することにしました。ただし、デコレータから呼び出された場合は、装飾されたオブジェクトの同じメソッドによって返された値を返します。 より明確にするためのいくつかのコード: interface StrategyInterface { public function getClassName(); } abstract class StrategyClass implements StrategyInterface { public function getClassName() { return \get_class($this); } } abstract class StrategyDecorator implements StrategyInterface { private $decorated; public function __construct(StrategyClass $decorated) { $this->decorated = $decorated; } public function getClassName() { return $this->decorated->getClassName(); } …
12 php  tdd 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.