Giter VIP home page Giter VIP logo

msqphp's Introduction

msqphp beta -2.0(注意是负)

msqphp is a simple but perfect framework.

msqphp是一个简单但是完美的框架(至少我认为是).

####################################################

##使用须知

开源,免费,无需求,函数随意改,代码随意拆,只要你别说这个框架是你自己写的,是msqphp框架,那你就随意折腾

当然:如果你想持续使用什么的话,最好别动框架本身,那个扩展的地方就够你闹腾了

git : https://github.com/MsqPHP/msqphp 开发手册 : http://www.kancloud.cn/msqphp/msqphp

####################################################

##要求

  • composer 安装 更新

  • php 7.0及以上

  • mbstring ^_^ 我不会像larvel一样自己写一个强大的mb_string函数库什么的

  • pdo 否则数据库什么的就别想了

  • config 按需合理配置

  • apache 重写规则以及 自定义 入口文件后缀

    注:因为框架比较强大的视图类(至少我认为很强大),导致静态html可以不经过apache重写规则直接访问(是不是很强大),且只需判断一下是否过期就直接返回,所以入口文件后缀为server.php当然强大的背后有很多问题,因为是根据请求的url参数放置静态html文件,如果遭到恶意攻造成大量的硬盘文件(如果不及时删除的话)(暂未实现过期删除或者定时清空什么的所以呢,呵呵,那就不是我的事了);

####################################################

##功能

  • 命名空间,闭包函数

  • 万能get,call,staticcall,便于扩展

    注:结果导致我不确定这个框架是不是面向对象什么的了,需要一个新功能,好,多一个method文件,返回一个function,需要一个新引用,好,多一个get文件,返回一个instance,0.0,无法想象会变成什么样子

  • 伪面向对象,原因如上

  • 基础功能类

  • composer支持(虽然是废话)

  • beta -2.0(注意是负)

####################################################

##注意

  • 只是一个beta -2.0(注意是负),除版权外,不负责任何问题
  • 框架未经实际或大范围使用
  • 不断的beta中,可能会产生 beta -1.0版本什么的
  • 确保所有配置的对应路径或文件存在,不负责创建什么的
  • 注意以上及一系列未知注意事项

####################################################

##安装

  • composer.json require msqphp/framework 版本号??(好像是1.几的beta版本)
  • 配置composer autoload pas-4 "App":"application" , 自己app应用的顶级命名空间位置
  • composer update
  • 引入vendor/msqphp/framework/Framework.php(或者引入composer auto类)
  • 写代码: \Msqphp\Framework::install(根目录) (理想状态,现在是个半成品)
  • 配置入口目录 根目录下public
  • 输入配置的网站(ip地址)开始使用吧.

如果可以且允许的话,推荐修改composer的autoload文件. 在函数 vendor\composer\ClassLoader.php\includeFile函数中添加一行代码 $GLOBALS['autoloader_files'][] = $file; 可以实现纯粹的惰性加载 (如果你能保证不出现异常,并且逻辑正常不需要自动加载,那么,你可以修改几个缓存时间,然后就可以将入口文件中加载composer中的autoload的那行代码注释,当然,不推荐);

实现原理:

调用控制器方法前,获得一次$GLOBALS['autoloader_files']所有加载类,储存在框架中,并清空 (此时大概会按需自动加载下配置的缓存处理类,session类,base基类大概不到10个文件.)

运行控制器对应方法

结束后,获得一次$GLOBALS['autoloader_files']所有加载类,储存在控制器缓存中,下次加载控制器时直接加载,并再次清空.

当框架运行结束的时候再获得一次$GLOBALS['autoloader_files'],并与之前的合并,将所有加载过的文件缓存到文件中.再次运行框架时就可以自动加载了(理想状态,不断修改中)

####################################################

##配置

  • route 下配置 模块 语言 支持情况
  • database 下配置 数据库相关情况
  • 入口文件配置 APP_DEBUG,以及给 环境类传的 路径配置(如果你改目录的话)
  • 按需合理配置

####################################################

##目录结构(config中大多可配,改不改是你的事情)

www  WEB部署目录(或者子目录)
├--composer.json         composer定义文件
├--application           应用目录(顶级命名空间 App)
│  ├--[模块目录]         可选
│     ├--Controller      逻辑类     希望且愿望 只存在调用 action model view 或者 session cookie 之类的 类函数,而几乎不写任何 php原生函数或代码什么的
│     ├--Action          数据处理加工   只加工,不读取
│     ├--Model           数据读取       读和取,不加工
│     └--View            视图展示       只展示 或者 从Action Model 获得展示数据(仅推荐不需要任何参数,全局一致(语言除外),并进行html缓存的数据)
│
│
├--public                WEB目录(对外访问目录)
│  ├--server.php         apache入口文件 ,载入引导程序
│  └--.htaccess          用于apache的重写
│
├--applicationtests     应用测试目录(暂时无用)
│
│
├--bootstrap            引导程序目录
│  └--app.php           app文件(定义APP_DEBUG,加载自动加载类,加载框架并运行框架,一个自定义的入口文件)
│
│
├--config               配置目录
│  └--config名字.php     对应的config
│
│
├--library              图书馆,也就是你自己的类文件函数什么的,怎么加载是你的事
│  └--msqphp            msqphp框架扩展目录,万能get,call,staticcall扩展(如果在这里面放类什么的,将composer autoload中添加psr4:当前路径[暂定])
│
│
├--resources            资源目录
│  ├--language          应用类语言目录  [模块]/语言/控制器(不带controller)/对应视图.php
│  ├--templates         应用类视图目录  [模块]/[主题]/[语言]/控制器(不带controller)/对应视图.php (允许单一视图配置对应语言的视图文件)
│  └--views             基础视图目录目录 404.tml 什么的
│
│
├--storage             仓库,放东西的,需要对应权限
│  ├--cache             文件缓存目录
│  ├--session           session缓存目录(如果文件的话)
│  ├--log               日志目录(暂未实现)
│  └--templates         模版目录
│     ├--cache          中间件缓存
│     └--last           最终的缓存 非静态html 纯php代码+html代码并且经过压缩(也就是没有注释换行什么的文件缓存)
│
│--vendor               composer扩展文件夹(加载什么是你的事)
│  └--msqphp            msqphp框架扩展什么的

命名规范

  • 目录 大写字母开头的驼峰

  • 类 psr-2 ,好像是

  • 函数 psr-2 ,好像是

  • 常量 随意,你分的清就好

  • 数据库 暂未完善

  • 实际上,随意,你分的清就好,但是模块文件夹,及控制器类文件首字母必须大写,这是框架自动加载的,懒得改

msqphp's People

Contributors

guaodiao avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.