Laravel ORM 模块图

还会更新,只是懒得整理,先堆这里了

image.png

PlatUML 代码:

@startuml

' 底层驱动部分
class DatabaseManager{
    connection() factory的大脑
}
class ConnectionFactory{
    newConnection()
}

interface Connection {
    defaultBuilder
    defaultGrammar
    defaultProcesser
    run()   // 真正到DB里跑SQL的
}
interface Connector {
    connect()
}

package Query|Schema {
    interface Grammar
    interface Processer
    note right of Processer: 对数据库返回值的二次拼装
    class QueryBuilder {
        IConnection
        IGrammar
        IProcesser

        paginate()
    }
}

DatabaseManager *--> ConnectionFactory
DatabaseManager *--> Connection
DatabaseManager *--> Connector

ConnectionFactory *--> Connection
ConnectionFactory *--> Connector

Connection --|> Grammar
Connection --|> Processer
QueryBuilder --|> Grammar
QueryBuilder --|> Processer

Connection -- QueryBuilder


' Eloquent
package Eloquent{
    abstract class Relation{
        Ebuilder

        constraints
    }
    class EBuilder{
        model
        scopes
        earerLoad
        macro

        first()
        has()
    }
    class model{
        scopes
        events

        __call()
        serialize()
    }
}

@enduml
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容