上一篇博客中,我们将简单的路由解析和执行,从入口文件public/index.php中移入到框架中.入口文件顿时变得清爽无比-- 但是,去我们的controller里看一下,会看到如下的code: public function actionView() { $body = 'Test body information'; require '../views/site/view.php'; } 难道我们每写一个要去渲染页面的action,都要去找相应路径的view,然后把它require进来.肯…
作为一个ERP数据处理框架,大部分的开发场景都差不多. 理想中,对于通用数据处理,我的步骤如下: 1.为窗体指定数据来源(数据表/查询等): 2.拖入编辑控件,指定绑定字段: 3.结束. 为此,我设计了几个基类窗体,给它们分成几个场景(如无数据/单表数据/主从表/多表关联等),在不同的业务模型下,我选取相应的基类窗体进行继承. 首先,看看最基础的基类窗体,它包含了基础的处理(诸如多语言加载.权限判断.状态刷新.自动数据绑定等基础方法和属性): /// <summary> /// 窗体基类 //…
1.  先建一个普通的窗体,until1 2.  先把类实现基类, 并需要实现基类需要继承的方法, 可以先不用再方法中写实现代码. TForm4 = class(TfrmmtAReportPeriodBase) function NewDayReportBefore(aStartDate, aEndDate: string): Boolean; override; 3. 右键,选择“View as Text” 4. 显示如下 5.  最关键的一步, object Form4: TForm4  改…
1. 抽象类 抽象类就是有一个或多个方法只被声明而未被实现. 抽象方法的声明以分号结束,并且用关键字abstract来说明它以标识它为抽象方法. 格式: public abstract class 类名{ 定义变量// 抽象方法// } 2. 接口是抽象类的一种,之包含常量与方法的定义,而没有变量与方法的实现,且其方法都是抽象方法. 接口声明的格式如下: [public] interface 接口名{ 常量的定义// 方法的定义// } 3. 接口的实现 一个类中可以实现多个接口,在implem…
作为ERP等数据应用程序,数据库的处理是重中之重. 在框架中,我封装了一个数据库的基类,在每个模组启动或窗体启动过程中,实例化一个基类即可调用CRUD操作(create 添加read读取 update 修改delete删除),当然,还包括基础的SQL事务处理. 这个过程中,还考虑到对插件的管控,利用反射增加了调用授权,避免未经授权的程序盗用数据连接. 看看完整的代码: /// <summary> /// 数据库连接基类 /// </summary> public class DBC…
前端于对数据操作的请求基本上就分为四类:增删改查,即增加.删除.修改.查询. 而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求. 不带ID参数请求包括:增加.分布多条查询 带ID参数请求包括:删除.修改.单条查询 DRF针对这五类需求,分别提供了五个扩展类来支持,叫Mixin扩展类. GenericAPIView继承自APIView,主要增加了操作序列化器和数据查询的方法.作用是为Mixin扩展类执行提供方法支持.通常在使用时,可搭配一个或多个Mixin扩展类. 找到并打开App…
最基础的窗体基类其实是通过应用场景反推的结构. 以下是场景一: 单表应用,普通的数据,比如单位/颜色/特殊字典等使用者少的,无需过多控制的可以使用一个数据表格来管理. 和Excel表格差不多,批量修改,统一保存. 这种设计时只需要变更Datagridview的数据列,并在代码中指定数据来源即可.看下代码: #region 数据目标定义 SaveTableName = "SYS_URightDef"; SaveTablePrimaryKey = "URDefRKEYIN&quo…
实际上无论是用基类还是派生类New, 结果是一样的: #include <stdio.h> class Base { public: int a; Base(){ a=0; } virtual ~Base(){ printf("base delete"); } virtual void setA()=0; }; class A:public Base { public: A(){ a = 10; } ~A(){ printf("A class delete\n&q…
下面的内容要说明两个问题:1. 基类的析构函数为什么要加上Virtual--防止内存泄露 1. 基类虚构函数无virtual,派生类无法析构,会导致内存泄露 #include <stdio.h> class Base { public: int a; Base(){ a=0; } ~Base(){ printf("base delete"); } virtual void setA()=0; }; class A:public Base { public: A(){ a =…
Keras的Layers,就是构成网络的每一层.Keras实现了很多层,包括核心层.卷基层.RNN网络层等诸多常用的网络结构.下面开介绍核心层中包含了哪些内容.因为这个核心层我现在还没有全部用到,所以会有一部分内容我并不是十分了解,因此直接附带了原文档介绍.有了解的朋友可以一起交流! 核心层基类       keras.layers.core.Layer() 下面介绍一下该类中包含的几个基本方法. # 把previous_layer层的输出连接到当前层的输入 set_previous(previ…