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

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

3
賢いPHPアプリケーションの組織構造?
無数のオープンソースプロジェクトに利用できる100万のファイルシステム構造があります。モジュール、言語ファイル、ドメイン、サードパーティライブラリ、移行、国際化、バックアップ、システムの他の部分へのsyslinkなどのものが、プロジェクトのファイルシステムを編成する多くのアプローチを生み出しています。 PHP開発者として、プロジェクト間で何らかの標準化が出現し始めているのではないかと思っています。PSR-0 、我々は最終的にファイルを命名し、ロードするための標準を持っている-しかし、それシステムやそれらがどのように正気の方法で処理することができますを構成するコンポーネントの残りの部分についての私の知識に何もありません。 私たちが扱っているのはMVCだけではありません。これらのすべてを正しく処理する大規模なプロジェクトの例にはどのようなものがありますか?

9
私の大学は「簡単な」プログラミング言語であるため、phpコースを提供していませんか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 私はコンピュータサイエンス学部の学生に会いましたが、彼らはjavaとaspxしか教えていないことがわかりました。ネットでトップのプログラミング言語であるphpを教えない理由を尋ねた。彼はそれが「簡単な」(または愛好家の)プログラミング言語だったと言います。どういう意味かわかりません。 あなたの意見は何ですか?
10 php 

1
異なるスコープからのi18nオブジェクトへのアクセス
私はMVCパターンを学ぶ方法として始まった私の個人的なフレームワークを構築していて、今ではほとんどのフレームワークよりも好きなものに進んでいます(これはおそらく私が好きなものを追加して、私がしないものを変更したためです)好きではありませんが、それにもかかわらず)良いか悪いかにかかわらず、私はいくつかのプロジェクトでそれを使用しています。 私が現在抱えている問題は、i18n機能にアクセスするための適切な方法を思い付かないことです(これは実際にはi18nではなく、単なる翻訳であり、完全なi18nサポートは含まれていません)。 それが機能する方法は、構成ファイルを言語ファイルとして使用することです。Configフレームワークでは構成ファイルが動的にロードされるため、クラスを使用してそれらをロードするのが非常に便利だと考えたため、必要でない限りここで一目で把握できます。 class Config { private static $settings = array(); private function __construct() { } public static function load($file) { $path = PROJECT_PATH . '/config/' . $file . '.php'; if (is_file($path)) { $settings = require($path); } else { throw new Exception('Configuration file [' . $file . '] doesn\'t exist', …


1
PHPで文字列式を使用してデータセットを評価する
アプリケーションの一部の条件を更新する必要がありました。評価するデータセットがあり、アプリケーションで次のようにハードコードされています。 $arr = array( 'a' => 'apple', 'b' => 'orange', 'c' => 1, 'd' => 2, 'e' => 5, 'f' => 'green', 'g' => 'red', 'h' => 'yellow', ) $res1 = ($arr['a'] == 'apple') ? TRUE : FALSE; $res2 = (($arr['b'] == $arr['f']) && ($arr['c'] < $arr['d']) ? TRUE : …
9 php 

3
クロスランゲージテスト駆動開発
短い質問:複数の言語にまたがるプロジェクトでテスト駆動開発をどのようにフォローしますか? 具体的には、JavaScriptとPHPを使用するWebアプリケーションを作成していて、TDDの原則に従いたいのですが、それらを統合する方法がわかりません。JSセクションとPHPセクションで別々のテストスイートを実行し、JSスイートのモックを使用してサーバーの応答をエミュレートしますか?1回の実行で両方のコンポーネントを単体テストする手法はありますか? これは、テスト駆動開発を使用した私の最初の経験なので、困難を少なくする方法について共有できるアドバイスがあればすばらしいでしょう。私がそれを選んだ理由は、プロトタイプが完成するとすぐに要件が変更され、設計を変更せざるを得なくなったためです。最初からやり直すのであれば、最初から組み込みの回帰テストを使ってより拡張可能なコードを書きたいと思っていました。 PHPテストはSimpleTestで、JavaScriptテストはJsTestDriverで作成しています。私はオブジェクト指向のパラダイムに慣れているので、PHPにはいくつかのクラスがあり、JavaScriptではプロトタイプ継承を使用して同様のことをしています。また、PythonでのTDDに関するこの本とJavaScriptでのTDD に関するこの本も読み始めましたが、これらすべては、Seleniumや別のWebドライバーなどを使用する以外のアプリケーションの完全なテストについては説明していません。フロントエンドの受け入れテストを実行するためにTDDはフルスタックの開発者のために切り取られていないだけですか?

2
登録時にパスワードを自動生成するのは良い考えですか?
現在取り組んでいるプロジェクトの登録システムを開発しています。 プロセスが長すぎる場合、ユーザーはサインアップしない傾向があるため、私は(少なくとも最初は)電子メールのみを必要とすると考えました。ここで、自動生成されたパスワードを送信します(これにより、電子メールアドレスを確認することもできます) )。また、登録を迅速に完了するために、弱いパスワードを選択することもできなくなります。 今までのところ、マイナス面は発見されていませんが、このシステムを使用しているサイトを見たことがないので、残念な点がいくつかあります。 それは良い考えですか? PS:もちろんFacebookや他の同様のサービスを介してサインアップも実装し、人々がパスワードを必要とせずにすばやくサインアップできるようにしますが、多くの人は、プライバシーの懸念から、またはそうでないために、クラシックサインアップを選択したいと思うかもしれません。それらのサービスのいずれかを使用します。

2
ヒップホップ仮想マシン(HHVM)は、理論的にどのようにPHPランタイムのパフォーマンスを向上させますか?
高いレベルから、Facebookなどはどうですか。Hip Hop仮想マシンでPHPのパフォーマンスを向上させるために使用しますか? 従来のzendエンジンを使用してコードを実行するのとどう違うのですか?これは、型がオプションで事前最適化手法を可能にするハックで定義されているためですか? 私の好奇心は、HHVMの採用というこの記事を読んだ後で生じました。

1
メニュー構築パターン
メニューがルーティングに使用されていない場合、メニューのアクティブ状態の処理に頭を悩ませています。 メニューシステムがルーティングも処理するDrupalから来ました。したがって、アクティブ状態とアクティブトレイル状態の設定は、ルートによって処理されます(これはメニューレンダリングシステムとしても機能します)。 現在、多くのPHPフレームワークには、ルーティングを処理するルータークラスがあります。メニューはPOSTを認識してはならないため、これは良い分離のようです|| オプション|| ... リクエスト。 しかし、フロントエンドを書いているとき、メニューをハードコーディングしていることに気づきました。または、すべてをDBに保存し、それらの値をビューに渡します。このアプローチが嫌いなのは、ルーターで既に書き込んだもののコピーを作成しているが、現在はMenuクラスを使用していることです。 例: Route::get('/somewhere','routename.somewhere','showStuffController'); Route::post('/somewhere','routename.somewhere','saveStuffController'); Menu::add('label.somewhere','routename.somewhere'); ここで懸念を分離しているので、それは素晴らしいことです。しかし、MenuはRouteに大きく依存して、アクティブ状態を設定します。メニューは、アクティブトレイルを設定するための階層についても知る必要があります。 つまり、アクティブなトレイルとアクティブなステータスクラスを設定することは、実際にはビューのことです。しかし、 if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; } あなたの意見の至る所で愚かに思えます。次に、迷惑なアクティブトレイルをすべて追加します。ビューがレンダリングされる前にそれを処理し、active-trailフラグをtrueに設定することは、私が知っている方法では非常に醜いようです(すべての子をループするforeachループ、...) 私の質問は: このよりきれいな、より良い、...を得るパターンまたはスマートな方法はありますか?アクティブトレイルの「問題」をどのように処理する必要がありますか? 子->親のレンダリングを考えていました。したがって、最も深いレベルの広告から始めて、次の段階に進みます。しかし、子供はその親について知っていますが、親は自分の子供については何も知りません(変なようです)。

3
異なる依存関係に必要な同じ機能を提供する2つのコンポーネント
Zend Framework 1とDoctrine2をORMレイヤーとして使用して、PHPでアプリケーションを構築しています。すべて順調です。さて、私はたまたまZF1とDoctrine2の両方が独自のキャッシング実装に付属していて、それに依存していることに気付きました。私は両方を評価しましたが、それぞれに独自の長所と短所がありますが、どちらも私の単純なニーズに対して他のものより優れているとは言えません。どちらのライブラリも、実装ではなく、それぞれのインターフェイスに対して作成されているようです。 これが問題であると感じる理由は、アプリケーションのブートストラップ中に、2つのキャッシュドライバーを構成する必要があることです。それぞれに独自の構文があります。この方法でミスマッチが簡単に作成され、このため、キャッシュバックエンドへの2つの接続を設定するのは非効率的です。 今後の最善の方法を決定するつもりであり、あなたが提供できるかもしれないあらゆる洞察を歓迎します。 これまでに考えたのは、4つのオプションです。 何もせず、キャッシング機能を提供する2つのクラスが存在することを受け入れます。 ZendのインターフェースをDoctrineのキャッシング実装に固定するFacadeクラスを作成します。 オプション2、その逆-Fendを作成して、DoctrineのインターフェースをZend Frameworkバックエンドにマッピングします。 multiple-interface-inheritanceを使用して、すべてをルール化する1つのインターフェースを作成し、重複がないことを祈ります(つまり、両方に「save」メソッドがある場合、PHPのために同じ順序でパラメーターを受け入れる必要があります。適切な多型の欠如)。 どのオプションが最適ですか、または「上記のどれにも当てはまらない」のバリエーションがありません。

4
PHP file_put_contentsファイルのロック
セナリオ: あなたは各行に文字列(平均文の価値)を持つファイルを持っています。議論のために、このファイルのサイズが1Mb(数千行)であるとしましょう。 ファイルを読み取り、ドキュメント内の一部の文字列を変更し(追加するだけでなく、一部の行を削除および変更する)、すべてのデータを新しいデータで上書きするスクリプトがあります。 質問: 「サーバー」のPHP、OS、またはhttpdなどには、このような問題(書き込みの途中で読み取り/書き込み)を停止するためのシステムがすでにありますか? ある場合は、その仕組みを説明し、例や関連ドキュメントへのリンクを示してください。 そうでない場合、書き込みが完了するまでファイルをロックし、前のスクリプトが書き込みを完了するまで他のすべての読み取りや書き込みを失敗させるなど、有効または設定できるものはありますか? 私の仮定およびその他の情報: 問題のサーバーは、PHPとApacheまたはLighttpdを実行しています。 スクリプトが1人のユーザーによって呼び出され、ファイルへの書き込みの途中であり、別のユーザーがその瞬間にファイルを読み取る場合。まだ書かれていないため、それを読んだユーザーは完全なドキュメントを取得できません。(この仮定が間違っている場合は修正してください) 私が関心を持っているのは、テキストファイルへのPHPの書き込みと読み取り、特に関数「fopen」/「fwrite」と主に「file_put_contents」だけです。「file_put_contents」ドキュメントを確認しましたが、詳細レベルや「LOCK_EX」フラグが何であるか、または何であるかについての詳細な説明は見つかりませんでした。 このシナリオは、ファイルのサイズが大きく、データの編集方法が原因で、これらの問題が発生する可能性が高いと想定する最悪のシナリオの例です。これらの問題について詳しく知りたいのですが、「mysqlを使用する」や「なぜそうしているのか」などの回答やコメントを望まない、または必要としません。ファイルの読み書きについて知りたいだけです。 PHPでは、適切な場所/ドキュメントを調べているようには見えません。そうです、私はPHPがこの方法でファイルを操作するための完璧な言語ではないことを理解しています。

6
ファイルを解析する最良の方法
EDIFACTやTRADACOMSなどの有名なファイル形式をパーサーで作成するためのより良い解決策を見つけようとしています。 これらの標準に慣れていない場合は、Wikipediaからこの例を確認してください。 製品の在庫状況のリクエストに回答するために使用されるEDIFACTメッセージの例については、以下を参照してください。 UNA:+.? ' UNB+IATB:1+6XPPC+LHPPC+940101:0950+1' UNH+1+PAORES:93:1:IA' MSG+1:45' IFT+3+XYZCOMPANY AVAILABILITY' ERC+A7V:1:AMD' IFT+3+NO MORE FLIGHTS' ODI' TVL+240493:1000::1220+FRA+JFK+DL+400+C' PDI++C:3+Y::3+F::1' APD+714C:0:::6++++++6X' TVL+240493:1740::2030+JFK+MIA+DL+081+C' PDI++C:4' APD+EM2:0:130::6+++++++DA' UNT+13+1' UNZ+1+1' UNAセグメントはオプションです。存在する場合は、メッセージの残りの部分を解釈するために使用される特殊文字を指定します。この順序でUNAに続く6文字があります。 コンポーネントデータ要素セパレータ(:このサンプルでは) データ要素セパレータ(このサンプルでは+) 10進数の通知(このサンプルでは。) リリースキャラクター(このサンプルでは?) 予約済み、スペースでなければならない セグメントターミネーター(このサンプルでは ') ご覧のとおり、解析されるのを待機している特別な方法でフォーマットされたデータの一部です(XMLファイルのように)。 現在、私のシステムはPHPで構築されており、セグメントごとに正規表現を使用してパーサーを作成できましたが、問題は誰もが標準を完全に実装しているわけではないということです。 一部のサプライヤーは、オプションのセグメントとフィールドを完全に無視する傾向があります。他の人は他より多くのデータを送信することを選択するかもしれません。そのため、ファイルが正しいかどうかをテストするために、セグメントとフィールドのバリデーターを作成する必要がありました。 私が今持っている正規表現の悪夢を想像できます。さらに、各サプライヤーは、各サプライヤーのパーサーを作成する傾向がある正規表現に多くの変更を加える必要があります。 質問: 1-これは(正規表現を使用して)ファイルを解析するためのベストプラクティスですか? 2-ファイルを解析するためのより良いソリューションはありますか(おそらくそこに既製のソリューションがあるでしょう)?どのセグメントが欠落しているか、またはファイルが破損しているかを表示できますか? 3-とにかくパーサーを構築する必要がある場合、どの設計パターンまたは方法論を使用する必要がありますか? ノート: yaccとANTLRについてどこかで読みましたが、私のニーズに合っているかどうかはわかりません。

2
どのオープンソースPHPプロジェクトに「完璧な」OOPデザインがありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 私はOOPの初心者であり、例を挙げて学ぶのが一番です。 この質問は、コーディングのベストプラクティスを学ぶためにどのScalaオープンソースプロジェクトを勉強すべきかと似ていますが、PHPであると言えます。 私はSymfonyが最高の「アーキテクチャ」(それが正確に何を意味するのか私が知っているふりはしません)だけでなく、Doctrine ORMを持っていると聞きました。これらのプロジェクトのソースコードを読んだり、使用されているパターンを推測したり、新しいトリックを学んだりするのに何ヶ月も費やす価値はありますか? Zendのコードベースを同化して好むWebページの数が同じであることを確認しました(必要と思われる場合はリンクを提供します)。 ベテランのOOP開発者が喜びの涙を流すような他のプロジェクトを知っていますか? ここでは、実用性と使用範囲はまったく問題ではないことを付け加えておきます-ただやりたいだけです。 私よりも開発者によって優れていると思われるコードベースを持つプロジェクトを選択してください。 プロジェクトの機能を実現するコードを記述します。 結果を比較し、わからないことを学ぶようにしてください。 基本的に、学術的関心のコードベース。何かおすすめはありますか?

4
2つの引数のみでPHPの三項演算子を使用する
私は最近、いくつかのコードをレビューしていましたが、ぼんやりとした感覚で、次のような構造を残していることに気付きました。 $guid = empty($subscription->guid) ? : $subscription->guid; さて、これはそれがはずのものをやっていなかったとされ、間違ったが、そのプロパティは常に設定されましたので、それは罰金を働いていた、と理由の5.3以来、何の構文エラーがない、次の変更は: PHP 5.3以降、三項演算子の中間部分を省略することが可能です。式expr1?:expr1がTRUEと評価された場合、expr3はexpr1を返し、そうでない場合はexpr3を返します。 私はこの変更を認識していませんでしたが、今、それを使用する必要があるかどうかに興味があります。これは私が痛んで、あなたが例えばを行うことができますルビーのような言語から欠落していたものですa = b || cいずれかを取得するbかcではなく、「本当の」ブール。ただし、3項演算子に選択した構文は、私には少し直観に反しているようです。これを製品コードで使用する必要がありますか?偶然見た時は間違いなく自分を投げました。

9
PHPで大規模なwebappを構築するときにフレームワークを回避することは理にかなっていますか?
ここ数年、PHP Webアプリケーション開発者として、MVCとフレームワークを共有しています。最初はスライスしたパン以来の最高のものだと思いました。すべてが非常に簡単に実装できるように見えました。 しかし今は、アプリケーションが複雑になるほど、フレームワークが導入する手間が増えるようです。そのため、これらを克服するための回避策を開発する必要があります。フレームワークのコアコードを詳しく調べ、変更を加えて思い通りの動作をさせる必要があるため、通常、このような回避策はかなり困難で複雑です。 たとえば、Slim(C)+ Idiorm(M)+ Twig(V)を使用する私のプロジェクトの1つ(これは非常に柔軟だと思います)では、親テンプレートに動的データを表示するだけのカスタム関数を作成する必要があります。フレームワークがなければ、インクルードされたファイルでmysql_query()を実行するだけで済みました。 わかりました。単純な企業プロファイルWebサイトを作成しているのであれば、フレームワークはすばらしいです。私は一晩でいくつかのコードをホイップすることができ、それらは通常朝までに準備ができており、それらから学んだ優れたコーディング実践とデザインパターンの量は非常に貴重です。 しかし実際には、オールインワンのWebベースの学校管理システムのような複雑なWebアプリケーションの場合、フレームワークは通常、上記の例のように私のビジネスプロセスの邪魔になります。 ですから私の質問は、基本に戻り、標準のPHPコードとライブラリを使用して、膨大なフレームワークとライブラリが存在する可能性がある次のプロジェクトを行うことです。 MVCのような?私の開発チームはかなり小さく、プログラマー2人とデザイナー1人だけです。他のプログラマーは上記の私の考えに同意します。

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