Php MVC—将业务逻辑放入外部类而不是控制器或模型

Php MVC—将业务逻辑放入外部类而不是控制器或模型,php,codeigniter,oop,model-view-controller,Php,Codeigniter,Oop,Model View Controller,我在Codeigniter中为我的应用程序创建外部类层次结构。 如下图所示 类层次结构 这些类位于“库”文件夹中。 整个项目文件结构如下所示 Codeigniter文件夹结构 Project | +-- controllers | | | +-- App.php | +-- models | | | +-- Student_model.php | +-- libraries | | | +-- Person.php | +--

我在Codeigniter中为我的应用程序创建外部类层次结构。 如下图所示

类层次结构

这些类位于“库”文件夹中。 整个项目文件结构如下所示

Codeigniter文件夹结构

Project
 |
 +-- controllers
 |  |  
 |  +-- App.php
 |    
 +-- models
 |  |  
 |  +-- Student_model.php
 |    
 +-- libraries
 |  |  
 |  +-- Person.php
 |  +-- Car.php
 |  +-- Student.php  
 |
在这里

使用的模型-数据处理

用于应用程序导航逻辑(连接模型和视图)的控制器

用于表示数据的视图(表示)

放入外部类层次结构的所有业务逻辑


代码如下所示

controllers/app.php
库/Person.php
models/Student_model.php
是的,但我们使用了不同的图案设计,我使用了类似这样的图案


是的,但我们有不同的图案设计我用的是这样的


我投票关闭这个问题,因为它看起来像是一个候选的,而不是一个编程问题本身。如果你需要用in控制器加载控制器,你不能用codeigniter MVC加载控制器,你需要一个第三方HMVC,我投票关闭这个问题,因为它看起来像,这本身不是一个编程问题。如果你需要用in控制器加载控制器,你不能用codeigniter MVC加载控制器,你需要第三方HMVC
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class App extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        //loading model
        $this->load->model('Student_model');

        //load custom class
        $this->load->library('Student');
    }

    public function studying()
    {
        $Student = new Student();

        //processing done inside student class
        $response = $Student->processStudying();
        echo $response;

        //send data to view later
    }

    //process done in external class
    public function showdata()
    {
        //get data from model
        $result = $this->Student_model->get_student_data();



        $Student2 = new Student();

        //processing done inside student class method
        $data = $Student2->studentDataProcessing($result);


        echo '<pre>',print_r($data,true),'</pre>';

        //send data to view
        //$this->load->view('student_view', $data);
    }


    public function writing()
    {
        $Student3 = new Student();

        //processing done inside student class method(inheri from person)
        $response = $Student3->writingProcess();

        echo $response;

        //send data to view later
    }


    //use CI libary inside a class
    public function displaytable()
    {
        $this->load->library('table');

        $Student4 = new Student();

        //processing done inside student class method
        $tableData= $Student4->CI_GenerateTable($this->table);

        echo $tableData;

        //send data to view later
    }




}

?>
<?php
//using custom libary
require_once('Person.php');
require_once('Car.php');

class Student Extends Person
{



    public function processStudying()
    {

        return 'process Studying';
    }



    //'create another nobject inside method

    public function studentDataProcessing($resultData)
    {

        $names;
        foreach($resultData as $Data)
        {
            $names[] = $Data->fname;
        }


        $car = new Car();
        $driveText = $car->drive($names);
        return $driveText;
    }



    public function CI_GenerateTable($r)
    {

        $data = array(
                        array('Name', 'Color', 'Size'),
                        array('Fred', 'Blue', 'Small'),
                        array('Mary', 'Red', 'Large'),
                        array('John', 'Green', 'Medium')
                );

        return $r->generate($data);
    }



}
class Car
{
    public function drive($studentNames)
    {

        $tempArr;
        foreach($studentNames as $element)
        {
            $tempArr[$element] = $element;
        }

        return  $tempArr;
    }
}
class Person
{

   public function writingProcess()
   {
      return  'writing';
   }

}
<?php

class Student_model extends CI_Model 
{

    public function __construct() 
    {
        parent::__construct();
        $this->load->database();
    }

    public function get_student_data()
    {

        $this->db->select('fname');
        $this->db->from('student');
        $query = $this->db->get();
        $result = $query->result();
        return $result;
    }


}
Project 
|__ Controllers
|   |__ controllers.php
|__ Models
|   |__ classes.php
|__ Dao 
|   |__ sql.php // sql statements
|__ Views
|   |__ views.html