php-オブジェクト指向デザインをlaravelに実装する
これが私のクラス図です
クラスの実装を以下に示します
人のクラス
class Person
{
public $name='person'
public function speak()
{
echo 'person speek'
}
}
学生クラス
class Student Extends Person
{
public $studentNumber;
public function learn()
{
echo 'learn';
}
}
教授クラス
class Professor Extends Person
{
public $salary;
public function teach()
{
echo 'teach';
}
}
これらのクラスをlaravelに実装したい
laravel、codeigniterなどのmvcパターンフレームワークのコントローラーはベースコントローラーから拡張されているため、これらのフレームワークでは各クラスのコントローラーを作成して親クラスから継承することはできませんか?
それは私が抱えている問題です
答え :
解決策:
そこでは少し混乱しているようですが、アプリケーションがMVCアーキテクチャでどのようにコーディングされているかについてはほとんど調べたくないかもしれません。
答えは、これらのクラスをデータベースに永続化するかどうかについては言及していません。それらをデータベースに保存したくない場合は、上記の回答を参照してください。必要な場所でクラスを定義し、他の言語と同じように使用します。
一方、これらのクラスをデータベースに永続化する場合は、これらのクラスをモデルとして定義する必要があります。個人ベースモデルを作成し、そこから他のモデルを拡張します。
コントローラーを個別に作成する必要はありません。必要な数だけ作成してください。上記のモデルの1つまたはすべてを、1つまたは複数のコントローラーから使用できます。
答え :
解決策:
それはあなたがそれをどのようにやりたいかによります。
一般的なものを使用して特性を定義し、クラスの場合と同じように使用できます。
また、複雑になる場合は、名前の間隔にも対処する必要があります。
http://php.net/manual/en/language.oop5.traits.php
trait PersonTrait {
public $name ='Mr. Awesome';
public function speak(){
}
}
class Student {
use PersonTrait;
public function learn(){
}
}
class Professor {
use PersonTrait;
public function teach(){
}
}
答え :
解決策:
開発者がフレームワークに到達すると、フレームワークの観点からコーディングを開始し、OOD方法論を実装する方法を考えますか?
まあ、問題はあなたが達成しようとしていることをまだ実行できるということです。 app
ディレクトリで、ディレクトリを作成し、それを「クラス」(または任意の名前)と呼ぶことができます。通常どおりにクラスを作成することから始めます(この場合は app \ Classes
のように、適切な名前空間を追加します)。すべて問題ないはずです。
ディレクトリをcomposer.json
autoload
に必ず追加してください
"autoload":{
"ファイル":[
"App / Classes / className.php"
]
}
PHPクラスなので、これも追加します
"autoload":{
"psr-4":{
"MyApp \\": "app /"
}、
}、
次に、 composer dump-autoload
を実行します。これで、通常どおりコントローラーでカスタムクラスを使用できます( use App\Classes\className;
を忘れないでください)。それでうまくいくはずです。
答え :
解決策:
これを行うには、codeigniterのコアフォルダーにpersonクラスを作成し、CI_Controllerで拡張してから、任意のクラスでpersonクラスを拡張します。
これはあなたの人のクラスがどのように見えるかです:
class Person extends CI_Controller {
function __construct()
{
parent::__construct();
}
public $name='person'
public function speak()
{
echo 'person speek'
}
}
ファイルをcodeigniterコアフォルダーに保存します。また、cofigファイルでsub_classプレフィックスを指定する必要があります。 Codeigniterは、コアフォルダーにあるファイルを自動ロードします。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。