DAL を自動生成する方法を見つけるのに苦労している言語の可能性を探りたいので、.Net から PHP に移行します。.Net では、Visual Studio を使用してデータモデルを生成するだけですが、PHP と MySQL でそれを行うにはどうすればよいので、すべてのクラスを手動で入力する必要はありません。私の現在の PHP IDE は Aptana です。
3 に答える
DoctrineやPropelなどの ORM を使用できます。
これらは、スキーマからのクラスの自動生成を特徴とし、その逆も同様です。
独自のアクセス レイヤーを作成する必要がある場合は、優れた OO インターフェイスと DB エンジンの抽象化を提供するPHP データ オブジェクト (PDO)を使用することをお勧めします。
すでに2つあるので、通常は答えを書きませんが、Imが.NETとPHPの開発者であり、両方を利用しようとしているという事実を踏まえて、私自身の洞察を提供したいと思います。
Visual Studioのように強力なコード生成を探している場合は、PHPでまだ見つけていないので、もう探す必要はありません。何年も探していました。VisualStudioはまさに「巨大」です
私の理解では、.NETコードスタイルのようなものはありません。ほとんどのPHPフレームワーク/アプリケーションは「シンプルさ」のために多くの犠牲を払っていると私は信じており、それは正しくないと思います。コードは、拡張可能で、保守可能で、構築するフレームワーク/アプリケーションでスケーラブルである必要があります
PropelとDoctrineは、PHPのNHibernateやEntity Frameworkと同様に、データマッピング(ORM)に優れていますが、完全に開発されたアプリケーションをスケーラブルにするには、データアクセス層とビジネスアクセス層が必要であることを忘れないでください。
PHPは.NETとよく似たOOをサポートしますが、いくつかの点で異なりますが、十分に開発された設計はあらゆる言語を対象としていることに注意してください。
私の答えは元の質問から少し離れていると思いますが、あなたが言ったように、あなたがしたかったので、私はあなたにもっと大きな答えを与えるのが好きでした:
...言語の可能性を探る...
そして、あなたはあなた自身を形成するために多くの意見を必要とします。幸運を祈ります。私の答えが退屈であなたを殺さないことを願っています!:)
PS:PHPを使用したBLLとDALに関するその他の情報が必要な場合は、ブログに書いたこの記事を確認してください。
PHP で .net スタイルのコードを書くだけでなく、PHP の背後にあるアイデアに飛び込みたい場合は、.net の Objects-all-over メソッドから離れる必要があります。
お気付きのように、オブジェクトの自動生成は PHP では一般的ではありません。つまり、問題の解決策はこれに依存すべきではありません。
より一般的なオブジェクトを作成し、継承を利用してオブジェクトの肥大化を回避してください。さらに、データ転送オブジェクトへの依存を減らし、完全なオブジェクトとしてのツール オブジェクトの作成への依存を増やしてください。
.net の罠から逃れることができれば、PHP を使って作業するのがずっと楽しくなることがわかるでしょう。
それを大局的に見ると、私は PHP で専門的に仕事をしてきた 5 年間で、army.mil のような大規模なプロジェクトで仕事を得るために完全な DAL を作成する必要性を感じたことはないと思います。終わり。
私が取り組んできた最大のプロジェクトは、データベースをポーリングして生データを取得し、そのデータを最終的なオブジェクトに渡すメソッドのリストを保持するモデル クラスのシステムだけです。(この場合、army.mil の記事を構成する記事)
モデルと PHP のデータの間に別のレイヤーは必要ありません。それはほとんどの場合、無駄な作業を増やすことを意味します。
それらが .net で理にかなっている理由はさまざまです。重要なことは、それらは簡単に自動生成できるため、それらを使用するための時間コストがほとんどないということです。
そうは言っても、フレームワークの範囲内にカプセル化されると、DAL は再び意味を成し始めます。プロジェクトが基本的なものであれば、CodeIgniter のようなフレームワークをお勧めします。CI には、非常に優れたデータベース抽象化システムが含まれています。構成で定義した特定のデータベースが必要とするものに変換するメソッドを優先して、SQL を放棄します。これは、DAL と同じ目的を果たします。モデルでクエリを作成しているため、データベースの構造を認識する必要があります。しかし、.net があなたに何を信じさせようとしているかに関わらず、.net DAL に対する懸念は依然として残っています。
ただし、PHP のすべてを実際に取得するには、フレームワークのわなをなくして自由に作業する必要があります。PHP はハッカー言語です。それはハッキングを可能にします。(クラッキングではなく、ズボンのシートのプログラミングのように、OK、両方..) そして、それは、大騒ぎが何であるかを理解するために実際に行う必要があることです。
両刃の剣ですか?完全に。しかし、コードをすばやく自由に操作する場合は、PHP の真価が発揮されます。迅速な一晩中のスタートアップのための goto 言語であるのには理由があります。
長くて技術的に話題から外れた回答で申し訳ありません。ご容赦いただければ幸いです。PHP の可能性を理解するために PHP を使い始めたとおっしゃいました。このまま進むと、弱く、不正確で、ぎこちなく、エラーが発生しやすいと判断することになります。そして、その柔軟性、拡張性、ハック機能、および精神において提供されるすべての素晴らしさを見逃してしまいます. 言葉の要点を見逃してほしくない。