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

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

16
多くのプログラミング言語の一部を学ぶのは苦痛ですか?
9年生のときにBASICでプログラミングのキャリアを始めました。加算、減算、印刷を行う簡単なプログラムを書くことで、少し基本を学びました。それから私は大学に行き、コンピューター情報とシステム工学を学びました。最初の年に私はCを教えられました。 次に、2年目にC ++を学びました。OOPの知識を教えてくれただけです。今、PHPを(HTMLとともに)実行しています。私はC ++、BASIC、またはPHPをマスターしていません。現在、モバイル開発に移行する予定です。しかし、私は学んだ言語ですべてをカバーしていないと感じています。 それは本当に重要ですか?
37 php  c++  c  basic 

2
PHP:いつ配列を使用し、ほとんどのデータを保存するコード構成にオブジェクトを使用するのですか?
PHPは混合パラダイム言語であり、配列などの非オブジェクトデータ型を使用して返すことができます。特定の状況でどのプログラミング構成を使用するかを決定する際に、配列とオブジェクトの選択に関するいくつかのガイドラインを明確にしようとする質問を投げかけます。 これは、PHP言語の構造を使用してデータをエンコードする方法と、データの受け渡しの目的(つまり、サービス指向アーキテクチャまたはWebサービス)で他の方法を選択する可能性が高い場合についての質問です。 例 {cost、name、part_number、item_count}で構成されるアイテムタイプがあるとします。プログラムでは、そのようなアイテムタイプをいくつか表示する必要があります。ここでは、各アイテムタイプを保持する外部コンテナとして配列を使用することにします。[PHP ArrayObjectをオブジェクト指向パラダイムに使用することもできますが、私の質問はその(外部)配列に関するものではありません]。私の質問は、アイテムタイプデータをエンコードする方法と、使用するパラダイムについてです。PHPでは、PHP Native Arraysまたはを使用できますPHP Objects。 このようなデータは、次の2つの方法でエンコードできます。 //PHP's associative arrays: $ret = array( 0 => array( 'cost' => 10.00, 'name' => 'item1', 'part_number' => 'zyz-100', 'item_count' => 15 ), 1 => array( 'cost' => 34.00, 'name' => 'item2', 'part_number' => 'abc-230', 'item_count' => 42 ), ); 対 //here …

7
単純な(自己完結型)関数のテストを保持する必要はありますか?
このことを考慮: public function polynominal($a, $b, $c, $d) { return $a * pow($x, 3) + $b * pow($x, 2) + $c * $x + $d; } 上記の機能に対してさまざまなテストを作成し、自分や他の人に「機能する」ことを証明するとします。 その後、これらのテストを削除して、いつまでも幸せに生きてみませんか?私のポイントは、いくつかの機能が機能することが証明された後、継続的にテストする必要がないことです。私は、これらの機能をまだテストする必要があると述べているカウンターポイントを探しています:...または、はい、これらはテストする必要はありません...


3
完全にモジュール化されたWebアプリケーションを構築する方法[非公開]
今後数か月で、クライアント用に構築したシステム(v1)を取得し、ゼロから再構築するプロジェクトを開始します。v2の目標は、この特定のクライアントが使用する独自のモジュールセットを持ち、別のクライアントが異なるモジュールセットを完全に使用できるようにモジュール化することです。ここでのコツは、会社Aがそのシステムの動作を変更する一連のチェックアウトおよびユーザーモジュールを持っている可能性があることです。会社Bは、標準のチェックアウト手順に固執するかもしれませんが、製品の閲覧方法をカスタマイズします。 アプリケーションをゼロから構築しCore、すべてのクライアントで共有したい一方で、クライアント専用に変更するものの柔軟性を維持したい場合、アプリケーションアーキテクチャへの良いアプローチは何ですか? CodeIgniterのフックを見たことがありますが、250のフックになる可能性があり、まだ十分な柔軟性がないため、これは良い解決策ではないと思います。他のソリューションは何ですか?理想的には、砂の中に線を引く必要はありません。

6
クラスで「最終」を使用することが本当に悪いのはなぜですか?
PHP OOPレガシーWebサイトをリファクタリングしています。 クラスの「最終」を「make it explicit that the class is currently not extended by anything」に使い始めたいと思います。クラスに行くと、これにより多くの時間を節約でき、protectedプロパティまたはメソッドの名前を変更/削除/変更できるかどうか疑問に思っています。クラスを本当に拡張したい場合は、最後のキーワードを削除して、拡張のためにロックを解除します。 すなわち、もし子クラスのないクラスに来たら、そのクラスを決勝にマークすることでその知識を記録することができます。次回、コードベースを再検索して、子があるかどうかを確認する必要はありません。したがって、リファクタリング中の時間を節約できます。 それはすべて賢明な時間節約のアイデアのように思えます...しかし、クラスはまれ/特別な場合にのみ「最終」にすべきであると読んでいます。 Mockオブジェクトの作成を台無しにしたり、私が考えていない他の副作用があるかもしれません。 私は何が欠けていますか?

13
キャリアアドバイス:PHPにとどまるか、他の何かで新しいキャリアを始めましょう(.Net?)[終了しました]
私は6〜12ヶ月でニューヨークに引っ越すことを計画しているので、新しい仕事を見つけざるを得ません。私が別の都市で生活を始めようと計画しているときは、おそらくキャリアの変化について考える良い機会でもあります。 PHP対.Net対Javaについて多くの異なる意見を見つけましたが、これはここのトピックではありません。どの言語が優れているかについて、新たな戦いを始めたくありません。プログラミング言語を知ることは、ソフトウェア開発者にとって最も重要なことではありません。本当に優れた開発者になるには、OOP、設計パターン、テストなどを知っておく必要があります。言語は物事を実現するためのツールにすぎません。 それでは私の質問に戻りましょう。ITの経験はさまざまです-ITサポート担当者として1年(Windowsの管理とサポート)、組み込みプログラミング(VB.Net 2005)で約2年の経験があり、過去2年間はPHP / MySQLを使用しています。私はMagentoのウェブショップで働き、Symfonyのいくつかのプロジェクトを支援し、いくつかのDrupalサイトを修正しました。 私の主な関心事は次のとおりです。 たとえば、Zendのような主要なPHPフレームワークの学習を開始するために、SymfonyはPHP認定を取得するなど、PHPのスキルを向上させ続けますか。 または、.NETまたはJavaの学習を開始しますか。私は.NETに精通しているので、.NETとJavaの間で選択する場合は選択するでしょう(または、Javaを選択するように説得できます:)。 キャリアに関しては、何が最良の選択かわかりません。新しいフレームワークと言語の学習は、PHPの既存のスキルを向上させるよりも時間がかかります。しかし.NETを使用すると、多くの可能性(Windows 7 Phone開発、Silverlight、WPF)があり、より良い仕事を見つける可能性が大きくなります。 私の調査によれば、PHPの仕事は少なくとも.NETよりも給与が少ない(間違っている場合は修正してください)。しかし、今.NETから始めた場合、私は初心者であり、給与は低くなります。ニューヨークで5万ドルから6万ドルを超える仕事を見つけるためにも、少なくとも2年以上、ある言語での経験が必要です。今後2〜3年の私の目標は、60〜80,000ドルのカテゴリで仕事を見つけることです。誤解しないでください、私はお金を追いかけているだけではありませんが、家族を始めようとしているとき、お金は重要な要素です。 私は27歳で、私のキャリアに関して間違った決定をする余地はあまりないと感じているので、アドバイスは大歓迎です。 更新 私の問題を解決するのに時間を割いてくれてありがとう。回答とコメントはすべて非常に役に立ちました。私はPHPに固執することに決めましたが、C#とSilverlight 4を学ぶことも決めました。


6
Doctrine 2またはPropel 1.5 / 1.6を選択する必要がありますか?[閉まっている]
Doctrine 2(またはそれ以降)およびPropel 1.5(またはそれ以降)を使用したことがある人からの話を聞きたいです。これら2つのオブジェクトリレーショナルマッパーのほとんどの比較は古いバージョン(Doctrine 1とPropel 1.3 / 1.4に基づいています)に基づいており、両方のORMは最近のリビジョンで大幅に再設計されました。たとえば、Propelの批判のほとんどは「ModelName Peer」クラスにしているようです。これらのクラスはいずれの場合も1.5で廃止されます。 ここに私がこれまでに蓄積したものがあります(そして、私はこのリストをできるだけバランスの取れたものにしようとしました...): 推進 長所 PHPのマジックメソッドに依存するのではなく、実際のコードが生成されるため、IDEに非常に優しい。これは、コード補完などのIDE機能を意味しますなどのが実際に役立つます。 高速(データベースの使用に関しては、データベースでランタイムのイントロスペクションは行われません) スキーマバージョン間のクリーンな移行(少なくとも1.6ベータ) PHP 5.3モデル(名前空間)を生成できます useXxxメソッドのようなものを使用して、多くのことを単一のデータベースクエリに簡単に連結できます。(上記の「コード補完」ビデオを参照) 短所 追加のビルドステップ、つまりモデルクラスのビルドが必要です。 生成されたコードは、Propelのバージョンが変更されたり、設定が変更されたり、スキーマが変更されるたびに再構築する必要があります。これは一部には直観的ではなく、モデルに適用されたカスタムメソッドは失われます。(おもう?) -真実ではない; 生成されたクラスは基本クラスであるため、カスタムメソッドは失われません。Propelは拡張専用のエンティティクラスを提供します。 いくつかの便利な機能(バージョンの動作、スキーマの移行など)はベータ版です。 教義 長所 もっと人気 Doctrine Query Languageは、PropelのActiveRecord戦略で簡単に可能なものよりも潜在的に複雑なデータ間の関係を表現できます。 Propelと比較した場合、再利用可能な動作を追加するのが簡単です。 スキーマを構築するためのDocBlockベースのコメントは、個別のXMLファイルではなく、実際のP​​HPに埋め込まれます。 どこでもPHP 5.3名前空間を使用します 短所 まったく新しいプログラミング言語(Doctrine Query Language)を学ぶ必要があります いくつかの場所で「マジックメソッド」の観点から実装されており、IDEのオートコンプリートは価値がありません。 データベースのイントロスペクションが必要なため、デフォルトではPropelよりもわずかに遅くなります。キャッシングはこれを削除できますが、キャッシングはかなり複雑になります。 コアコードベースに含まれる動作が少なくなります。Propelが提供するいくつかの機能(ネストされたセットなど)は、拡張機能を介してのみ使用できます。 Freakin 'HUGE :) これは、両方のツールで利用可能なドキュメントを読むことによってのみ収集しましたが、実際にはまだ何も作成していません。 ただし、両方のツールを使用して、各ライブラリの長所/短所に関する経験を共有し、この時点での推奨事項を共有している人からの意見を聞きたいと思います。
30 php  orm  doctrine 

7
どちらが良いか:HTMLをPHPコードの内部に含めるか、外部に含めるか?
これを見てください: <?php echo "Hello World"; ?> <br /> <?php echo "Welcome"; ?> そして、これを見てください: <?php echo "Hello World"; echo "<br />"; echo "Welcome"; ?> 上記の例のどれが(少なくともパフォーマンスの観点から)より良いと考えられますか? 私は例が些細なものであることを知っていますが、良い習慣を最初から守りたいので、より多くの行があればパフォーマンスや悪影響に影響しないようにします。

15
2つのプログラミング言語を行き来するのは賢明ですか?[閉まっている]
私は2年近く、かなり多くのPHPを書いてきました。現在、.NET(主にc#)開発を行っています。ただし、時々戻ってphpを実行します。 私の主な質問は、これを続けるのが賢明なのか、C#での開発を続けるべきなのか、ということです。これは長期的に私に害を及ぼすでしょうか(私の主な目標はすべての取引のジャックになることではないことに注意してください)、またはそれを行うことは良い習慣ですか?

10
連絡先帳などの単純なWebサイトのプログラミングに適した(ニート)アーキテクチャは何ですか?
単純なWebサイト、たとえば連絡先を追加、削除、更新できる連絡先帳を作成するindex.phpとき、ユーザーがログインしていない場合はパスワードを入力し、正しいパスワードを入力した場合はユーザーに入力するファイルを作成しますセッションを割り当て、連絡先と特定のことを行うことができます。 2つのファイルがあります。 最初の(contacts.php)はHTMLコードを表示するためのものです。HTMLコードの上に、2番目のファイルを含めてクラスを作成します。 2番目(contacts_class.php)には、追加、削除、および更新のためのすべてのメソッドが含まれています。 大丈夫だと思いますが、大きなプロジェクトを実装する場合、どうすればいいですか?すべてのページにフォルダーを作成し、それらにファイルを配置する必要がありますか(上記、HTML、クラスなど)、どうすればよいですか?他のすべてのプログラマーが完全に理解するような大規模プロジェクトを構築するのに適した、きちんとしたアーキテクチャとは何ですか?

5
PHPログインスクリプトで採用すべきベストプラクティスは何ですか?
クライアントのWebサイトをより安全にするために、ログインスクリプトを書き直したいと思っています。これに実装できるベストプラクティスを知りたい。パスワードで保護されたコントロールパネルは豊富にありますが、コードの記述、速度、セキュリティの点でベストプラクティスを暗示していると思われるものはほとんどありません。 PHPとMYSQLデータベースを使用します。 以前はmd5を使用していましたが、sha256またはsha512の方が(安全なハッシュとソルトと共に)優れていることがわかります。 一部のログインスクリプトは、セッション全体またはユーザーエージェント全体でIPアドレスを記録しますが、プロキシサーバーと互換性がないため、それを避けたいと思います。 また、PHP 5でセッションを使用する際のベストプラクティスにも少し遅れています(前回読んだのはPHP 4でした)。これに関するいくつかのベストプラクティスが役立ちます。 ありがとう。

9
多くのPHP開発者がisset()および/またはempty()のようなPHPの同様の防御機能の使用を嫌うのはなぜですか?
stackoverflowでは、この問題が常に発生します: E_NOTICE?== E_DEBUG、より洗練されたerror_handlerでisset()および@を回避 E_NOTICEがオンのときに$ _GETのundefindインデックスをチェックしないようにPHPを設定する方法は? PHPがPHP Noticeエラーを記録しないようにする方法 このようなPHP 5.3通知をオフにするにはどうすればよいですか? でもペッカ(固体PHPのアドバイスの多くを提供しています)恐ろしい突き当てたE_NOTICEモンスターと望んで使用するよりも、よりよい解決策のためにisset():ISSET()と醜い空()メイクコード 個人的には、アプリケーションのフローを管理するために多くの場所で使用isset()しempty()ています。例えば: public function do_something($optional_parameter = NULL) { if (!empty($optional_parameter)) { // do optional stuff with the contents of $optional_parameter } // do mandatory stuff } このような単純なスニペットでも: if (!isset($_REQUEST['form_var'])) { // something's missing, do something about it. } 私には非常に理にかなっています。肥大化しているようには見えず、安定したコードのように見えます。しかし、多くの開発者はをE_NOTICE有効にしてアプリケーションを起動し、多くのフラストレーションのある「初期化されていない配列インデックス」通知を発見し、定義済み変数をチェックしてコードを「ポイ捨て」する見込みに顔をしかめますisset()。 他の言語は物事を異なる方法で処理すると思います。経験から言えば、JavaScriptはPHPほど丁寧ではありません。未定義の変数は、通常、スクリプトの実行を停止します。また、(経験不足から言えば)C / …

7
参照がPHPでめったに使用されないのはなぜですか?
私はC ++の知識があり、ポインターが一般的に使用されていることを知っていますが、PHPのオープンソースコードを調べ始め、メソッドで参照を使用するコードを見たことはありません。 代わりに、コードは、変数への参照をメソッドに渡す代わりに常に戻り値を使用します。その後、変数の値が変更され、そのまま返されます。 参照を使用するとメモリ使用量が少なくなるので、なぜPHPで使用されないのですか?
26 php  reference 

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