What design pattern is Codeigniter using?

2019-06-16 21:17发布

问题:

Fairly straightforward question:

I know that Codeigniter is a MVC framework - however what design pattern is Codeigniter using?

From first look it seems like Facade, but I could be wrong.

Edit:

Perhaps I should describe Codeigniter for those who don't use it.
In Codeigniter you have a concept of a Controller and a Model, which each has their own separate folder. In each of the folders you create a file: cart.php:

<?php

class Cart {
 //...
}
?>

Then you can also have a model:

<?php

class User {
    function login(){...}
}
?>

Inside of the class Cart, you can use the login function in User by simply using $this->user->login()

I find this interesting because the framework makes an object of the User object and the programmer does not.

回答1:

In Codeigniter you have a concept of a Controller and a Model, which each has their own separate folder.

They have setup their main router class such that it searches for corresponding controller and model files, it can even go recursive. This has nothing to do with any design pattern, it is just a folder organization.

I find this interesting because the framework makes an object of the User object and the programmer does not.

Yup, they have created a lot of stuff ready-made and to be used any time you want. The User class is used to control whole user system.

Basically, as you said, the main design pattern used is MVC, rest of the things are controlled by different core classes for a specific task.