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

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

5
Web用のPHPで開発する場合、Linuxにはどのような利点がありますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私は友人と大きなPHPプロジェクトを始めようとしています。PHPを使用するのは初めてで、とても人気があるのでLinuxでの開発を試してみるべきかどうか疑問に思っています。 私はLinuxで過去の経験があり、vimを知っているのでエディターの選択は難しくありません(VS.PHPを見て、変更から私を元に戻しています)。 PHP(または任意のWeb言語)を開発するときにLinuxを使用すると、利点がありますか?

4
PHPでオブジェクト指向の方法でデータを渡すにはどうすればよいですか?
MVCフレームワーク(CodeIgniterなど)で作業しているときでも、オブジェクトではなくネストされた配列を渡すことに定期的に頼っています。 これは、オブジェクト指向についての私の理解にうまく従いません。たとえば、コードをJavaに移植する場合、そのような配列(またはベクターなど)を渡すことを夢見ていません。 これがデータを処理する適切な方法かどうか疑問に思っていました。PHPで配列がこのように渡される理由、またはオブジェクトが使用されない理由はありますか?データを渡す最良の方法は何ですか?

7
SQLインジェクションに対して脆弱なコードの記述をプログラマーに停止させるにはどうすればよいですか?
時々忙しくなり、小さなタスクをジュニアプログラマに委任します。しかし、十分に注意を払わないと、この種のコードを本番環境で使用することになります。 class DivtoggleController extends Zend_Controller_Action { public function closeAction() { /* ... code removed for brevity ... */ $req = $this->getRequest(); $formData = $req->getPost(); $d = $formData['div']; $i = $formData['id']; $dm = new Model_DivtoggleManager(); $rs = $dm->setDivToggleById($d, $i); } } class Model_DivtoggleManager extends Zend_Db_Table { public function setDivToggleById($div, $id) { …
11 php  sql  training 

7
Python / RubyとPHPを長い間使用していて、まだPHPを好む人はいますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 9年前に閉鎖されました。 私は通常、PHPを守る記事と使用されている議論に魅了されています。これらの種類の記事の著者は、他の言語でどのような経験をしたかについて言及しないことがよくあります。個人的には、誰かがPythonまたはRuby、そしてPHPを高いレベルで知っていて、それでもPHPを好むと想像するのは難しいと思います。 したがって、この説明に当てはまる人がいれば、これらの言語のいずれかよりもPHPを好む理由を聞いてみたいと思います。

4
PHP 6はどうなりますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 PHP 5.3以降でプレビューされたPHP 6の変更に興奮しています。しかし、なぜPHP 6をリリースするのにそんなに時間がかかるのだろうか?それに関する書籍は2008年から発行されており、2007年以降は発表されていますが、アルファ版またはベータ版についてはまだ聞いていません。なぜリリースするのにそんなに時間がかかるのですか?それとも、メジャーリリースに移行するときに、すべての言語で、リリースに4〜5年かかると思いますか?

2
DDDの例外
私はDDDを学んでいて、特定の状況で例外をスローすることを考えています。私はオブジェクトが悪い状態に入ることができないことを理解しているので、ここで例外は問題ありませんが、多くの例では、たとえば、データベースに電子メールが存在する新しいユーザーを追加しようとした場合にも例外がスローされます。 public function doIt(UserData $userData) { $user = $this->userRepository->byEmail($userData->email()); if ($user) { throw new UserAlreadyExistsException(); } $this->userRepository->add( new User( $userData->email(), $userData->password() ) ); } したがって、この電子メールを持つユーザーが存在する場合、アプリケーションサービスで例外をキャッチできますが、try-catchブロックを使用してアプリケーションの操作を制御するべきではありません。 これに最適な方法は何ですか?

6
エンティティメソッドコールでのDDDインジェクションサービス
質問の短い形式 エンティティメソッドの呼び出しにサービスを注入することは、DDDおよびOOPのベストプラクティスの範囲内ですか? 長い形式の例 DDDに従来のOrder-LineItemsケースがあるとします。ここでは、Orderと呼ばれるドメインエンティティがあり、これは集約ルートとしても機能し、そのエンティティは値オブジェクトだけでなく、ラインアイテムのコレクションからも構成されます。エンティティ。 アプリケーションで流暢な構文を使用して、次のようなことができると仮定します(getLineItemsメソッドを呼び出す2行目の構文に注目してください)。 $order = $orderService->getOrderByID($orderID); foreach($order->getLineItems($orderService) as $lineItem) { ... } OrderEntityにLineItemRepositoryを挿入したくないのは、それが考えられるいくつかの原則に違反しているためです。しかし、構文の流暢さは私たちが本当に望んでいるものです。それは、テストだけでなく、読みやすく、保守しやすいからです。 のメソッドgetLineItemsに注意して、次のコードを検討してくださいOrderEntity。 interface IOrderService { public function getOrderByID($orderID) : OrderEntity; public function getLineItems(OrderEntity $orderEntity) : LineItemCollection; } class OrderService implements IOrderService { private $orderRepository; private $lineItemRepository; public function __construct(IOrderRepository $orderRepository, ILineItemRepository $lineItemRepository) { $this->orderRepository = $orderRepository; …

8
競合他社に秘密を公開せずに、PHP Webアプリケーションを安全にデバッグするにはどうすればよいですか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 最近プログラムを作りました。2行のコードを削除するのを忘れました。その間違いは私に毎日一日あたり800ドルの費用がかかりました。 私はPHPでプログラミングをしていました。訪問者がプロキシを使用している場合、別の場所にリダイレクトされます。一部のコードにはioncubeが含まれているため、デバッガーの使用は不可能でした。プログラムは単にどこかにリダイレクトするだけなので、コードのどの部分が実行されるのかを確認するのは困難です。 だから私はどこにでもたくさんのデバッグ情報を置いた。とにかく後者を削除するつもりだった。 もちろん、デバッグする最も自然な方法は、デバッグ情報をファイルに入れることです。問題は私がプロキシをよく使用することです。そのため、プログラムを変更した後、filezillaを使用してテキストファイルをダウンロードする必要があります。多くの場合、テキストファイルには、表示する必要があると思われるものが表示されません。最後に、ウェブにエラーを表示することにしました。 デバッグモードを考えた。ただし、デバッグ情報の削除は忘れてしまいます。 たとえば、ユーザーが?debuggingmode = 1を実行する場合、デバッグモードを使用することを検討しました。しかし、どういうわけか私の競争相手は秘密のキーワードを推測できるのではないかと妄想的でした。 ほとんどのデバッグ情報を削除しました。1つは削除するのを忘れて、ユーザーが適切な国のプロキシを使用している場合にのみ表示されます。私は正しい国からの代理人を持っていないことがわかり、それを認識していませんでした。プログラムが24時間動作した後、それをメインドメインにアップロードしました。 私のライバルは、プロキシを使用して、デバッグコードを参照してください。彼はアイデアをコピーし、それが私が1日あたり$ 800を失った方法です。 振り返ってみると、どこが間違っていたのか本当にわかりません。私は細心の注意を払っています。それでも起こった。 競合他社に秘密を公開せずに、PHP Webアプリケーションを安全にデバッグするにはどうすればよいですか?
11 php  debugging 

2
プライベートプロジェクトを配置するにはどのようなライセンスが必要ですか?
仕事が商用目的で非公開であり、そのソースコードではないプロジェクトは、誰にでも配布されます。機能的なアプリケーションだけがWebサイトを通じて消費者を示しました。 次のような構造になっています。 ソースコードはPHPで記述されています。これは、ComposerとPHPUnitを使用するときにサードパーティのコードが使用される唯一の部分です。 HTML、CSS、Javascriptテクノロジーが使用されます(無料のサードパーティライブラリを使用) サーバー側のMySQLサーバー、PHP、およびMemcachedが使用されます。 そしてサーバーは共有ホスティングではなく、VPSです。 私たちは誰にもソースコードを見せたくありませんが、何らかの理由でコードが盗まれたり、その他の方法で入手されたりした場合は、いかなる種類の開示も許可しないライセンスが必要です。 私の質問は: このタイプのプロジェクトには、サードパーティコードとプライベートコードの互換性がありますか? これらの作品のライセンスは可能ですか?
11 php  licensing 

3
symfonyで外部RESTful APIを利用する方法は?
私たちはプロジェクトのマイクロサービスアーキテクチャを構築しており、主にフロントエンドのSymfonyアプリケーションがバックエンドのRESTful APIと対話しています。 問題は、このアプローチがデータベースを持つDoctrineに大きく依存しているSymfonyエンティティ管理を壊していることです。Symfonyは通常、Doctrineでエンティティを処理し、ほとんどの作業を自動化しますが、APIから外部データにアクセスする必要がある場合、これは簡単に再現できません。 たとえば、クライアントエンティティの場合: Doctrineを使用すると、Clientクラスを定義するだけで、クライアントを簡単に作成、更新、取得できます REST APIアプローチを使用すると、APIを介してクライアントにアクセスできますが、クライアントの作成(POST)、更新(PUT)、取得(GET)などを定義するために多くの作業が必要です。 クライアントは、フロントエンドアプリだけでなく、専用のAPIだけでなく、いくつかのアプリケーションでも使用されています。 API呼び出しの複雑さを隠すエンティティのようなメソッドを使用してクラスを作成し、すべてのAPIデータをローカルにインポートして、Doctrineを通じて、または他の方法でそれらにアクセスする必要がありますか?

1
ソーシャルネットワーク通知システム
バックグラウンド 私はいくつかのソーシャルネットワーキング機能を含むクライアント向けのアプリに取り組んでいます。私はもともとモバイルフロントエンドを開発していましたが、バックエンドの開発も担当する状況でした。 一般的な背景として、私たちのシステムでは、ソーシャルネットワークから期待されるように、ユーザーが他のユーザーをフォローし、フォローしているユーザーに関する通知を受け取ることができます。注意すべき点は、ほんの数サブセット(せいぜい数百人)のユーザーのみがフォローできることであり、ほとんどのユーザーベースはこれらの個人の少なくとも1人をフォローしていると予想されます。 UI側には、番号が付いた通知ボタンがあり、ボタンをクリックすると通知画面に移動します。 問題 私は、通知を実装するための戦略と、データベースに1つ以上の通知テーブルを作成するために見つけたほとんどのリソースを調査してきました。(私が好む例はここで受け入れられた答えです:https : //stackoverflow.com/questions/9735578/building-a-notification-system)。 私を後押ししているのは、通知に関するほとんどのデータベース駆動型の戦略では、各フォロワーの通知ごとに行を挿入する必要があるということです。したがって、1,000人がSallyをフォローしている場合、対応するテーブルに1,000行を挿入します。それはスケーラブルですか?数万人または数十万人のユーザーがサリーをフォローしていて、彼女が1日に数十の投稿を作成している場合はどうなりますか? 私の元のアイデアはクエリですべてを処理することでした:通知ボタンの数は、最後に通知画面にアクセスしたときより最近投稿されたコンテンツの行数を要求することによって取得され、個々の通知はより詳細なクエリから生成されます通知画面にアクセスしたとき。このアプローチでは、書き込みや追加のストレージは必要ありませんが、柔軟性がなく、サーバーをかなり難しくします。 セットアップ (前の開発者によって確立された)バックエンドは、CodeIgniterとMySQLデータベースを使用します。現在、くだらないGoDaddy共有ホスティングアカウントで実行されていますが、本稼働に入る前にアップグレードされると思います(希望ですか?)。ホスティングパッケージは、ユーザーの増加に合わせてスケーリングされます。 現在、私たちのフロントエンドはモバイルアプリのみですが、後でウェブサイトも構築する予定です。現時点では、サーバーから通知に関するリアルタイムのプッシュ更新を取得することに関心はありません。 補遺 私はバックエンドに特化しておらず、私はその部門の頭の中にいます。クライアントはそれを知っており、私はこの種のプロジェクトの範囲を説明するために最善を尽くしましたが、現時点では他の誰もプロジェクトに取り組むことを信頼しないことを明確にしています。テスターの追加を開始する前に、あと1か月の作業が必要であり、あらゆる種類のパフォーマンスメトリックを取得できます。ユーザー数や今後5年間に使用するハードウェアを実際に見積もることはできませんが、クライアントは数十万人以上のユーザーを望んでいると思います。 これがここに投稿される問題の具体的な内容であることを願っています。必要に応じて調整できます。ご不明な点がある場合や、重要な詳細を省略している場合は、お問い合わせください。 tl; dr すべてのユーザーが同じ数百人の何人かしかフォローしていない場合、データベース主導の通知システムは長期的なスケーラビリティにマイナスの影響を及ぼしますか? フォロワーごとに通知ごとに個別の通知行を必要とせずに、通知をデータベース主導にする方法はありますか? 完全にクエリ駆動型の通知システムはスケーラブルですか、それともDBにデータを書き込まない以外に利点がありますか? 私はこれを早すぎると思いすぎていますか?クライアントが限られた予算であり、最終製品が人気があるかどうかまだわからないので、今のところ機能するものを構築するだけで問題が発生した場合に最適化を検討できますか?

2
HTTPリクエスト/レスポンスオブジェクトは不変である必要がありますか?
ほとんどのWebアプリケーションは要求/応答パラダイムに基づいていると言っても安全だと思います。PHPは、これらのオブジェクトを正式に抽象化したことがありません。1つのグループがこれを変更しようとしています:https : //github.com/php-fig/fig-standards/blob/master/proposed/http-message.md しかし、彼らは不変性の問題についてはある程度傍受された。一方では、要求/応答オブジェクトは通常、ライフサイクル中にほとんど変更を必要としません。一方、特に応答オブジェクトでは、多くの場合、HTTPヘッダーを追加する必要があります。 さらに、不変性がPHPの世界で実際に使用されたことはありません。 不変の要求/応答オブジェクトを使用すると、どのような利点がありますか jsonオブジェクトを返すとします。 $response = new JsonResponse($item); 素敵でシンプル。しかし、要求はクロスオリジンリソースシェアリング(CORS)要求であることがわかりました。応答を生成するコードは気にする必要はありませんが、下流のどこかに、必要なAccess-Controlヘッダーを追加するプロセスがあります。元の応答を維持し、追加のヘッダーを使用して新しい応答を作成する利点はありますか?それとも厳密にはプログラミングスタイルの問題です。 リクエストオブジェクトはもう少し興味深いです。同じように始まります: $request = new Request('incoming request information including uri and headers'); 初期情報を変更する必要はありません。ただし、リクエストが渡されると、処理情報を追加する必要が生じることがよくあります。たとえば、特定のリクエストに対して実行するアクションを決定するURLマッチャーがあるとします。 $request->setAttribute('action',function() {}); 実際にアクションを実行するのは、下流プロセスの責任です。不変の要求をラップする変更可能なRequestAttributesCollectionを使用することもできますが、実際には少し扱いに​​くい傾向があります。また、属性コレクションを除いて、不変のリクエストを持つこともできます。例外も扱いにくい傾向があります。この種の要件に対処した経験はありますか?

5
MVCでは、モデルからの基本的なデータ取得をビューで実行できますか?
「細いコントローラー、ファットモデル」の概念と、出力用のデータが必要な場合にビューがモデルを直接呼び出すことができるという一般的な受け入れを考えると、コントローラーではなくビュー内のリクエストの「取得と表示」部分の処理を検討する必要がありますか?例(コードをかなり一般的なものにしようとする): コントローラ <?php class Invoice extends Base_Controller { /** * Get all the invoices for this month */ public function current_month() { // as there's no user input let's keep the controller very skinny, // DON'T get data from the Model here, just load the view $this->load->view('invoice/current_month'); } } 見る …

4
データベースクエリはページ自体から抽象化する必要がありますか?
PHPでページ生成を作成するとき、データベースクエリが散らかっている一連のファイルを作成していることがよくあります。たとえば、次のように、投稿に関するデータをデータベースから直接フェッチしてページに表示するクエリがあるとします。 $statement = $db->prepare('SELECT * FROM posts WHERE id=:id'); $statement->bindValue(':id', $id, PDO::PARAM_INT); $statement->execute(); $post = $statement->fetch(PDO::FETCH_ASSOC); $content = $post['content'] // do something with the content これらの迅速な1回限りのクエリは通常は小さいですが、データベースのやり取りコードの大部分が結局乱雑に見えることがあります。 場合によっては、ポスト関連のdbクエリを処理する単純な関数ライブラリを作成し、コードのブロックを単純なものに短縮することで、この問題を解決しました。 $content = post_get_content($id); そして、それは素晴らしいことです。または、少なくとも何か他のことをする必要があるまでです。たぶん、最新の5つの投稿をリストに表示する必要があります。ええと、いつでも別の関数を追加できます。 $recent_posts = post_get_recent(5); foreach ($recent_posts as $post) { ... } しかしSELECT *、それは結局クエリを使用することになります。これは通常、とにかく必要はありませんが、しばしば複雑すぎて合理的に抽象化できません。最終的に私は、すべての単一のユースケースのデータベース相互作用関数の大規模なライブラリ、またはすべてのページのコード内の一連の乱雑なクエリのいずれかになります。そして、これらのライブラリを構築した後でも、以前に使用したことがない小さな結合を1つ実行する必要があることに気づき、その仕事を行うために、突然別の高度に専門化された関数を作成する必要があります。 確かに、一般的なユースケースや特定のやり取りのクエリに関数を使用することはできますが、生のクエリを書き始めるとすぐに、すべてに直接アクセスできるようになります。それとも、怠惰になって、MySQLクエリで直接実行する必要があるPHPループで処理を開始します。 インターネットアプリケーションの記述に詳しい方にお願いしたいと思います。コードの追加の行と、抽象化によって導入される可能性のある非効率性に見合う保守性の向上はありますか。それとも、直接クエリ文字列を使用するだけで、データベースの相互作用を処理するための許容できる方法ですか?

3
7月26日の特別な点と、それがExpiresヘッダーの例で頻繁に使用されるのはなぜですか?
7月26日(私の誕生日)はExpires、ヘッダーを使用したhttpキャッシングの防止に関連するさまざまなPHPの例で実際に頻繁に使用されていることに気づきました。 /programming/12398714/cache-issue-with-private-networking-stream /programming/2833305/how-to-expire-page-in-php-when-user-logout http://expressionengine.com/archived_forums/viewthread/81945/ その日には何が特別ですか?
10 php  headers 

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