0框架控制器继承基类和自定义类示例,自定义基类

   ThinkPHP 提供了四个 Model 类,供别的的 Model 实行三番七次。Model 类中是
MVC 中的模型类,它是调用 长久层
的上层类。认为那样描述难点多多,不过有啥样格局吗?不过,这一个 Model
有的时候不能够满意我们的某些须要,因而大家供给自定义一个 Model
类出来,不过自定义的 Model 同样要世襲 TP 提供的 Model
类,而把大家自定义的 Model 类作为大家项目中的 Model
基类。作者怎么感觉自身在说绕口令,等等…我有一点晕。

正文实例陈说了ThinkPHP5.0框架调控器世袭基类和自定义类。分享给大家供大家参照他事他说加以考查,具体如下:

品类支付中常常常某些是常用到的控件.在种种分界面都会有比方   重回上生机勃勃层的back开关   ,tableView列表控件 …….

iOS开辟中,互联网央浼获得json转变为字典,然后字典转变为模型,这是很广阔要做的事。成型的第三方框架也可以有好多,方今相当的红的YYKit中的YYMoel对各大那上面包车型地铁框架满含JsonModel,MjExtension等效用都负有相比。可是授之以鱼不及授之以渔,临时候我们唯有想要的正是字典转模型而已,简单,可控,可自定义。明天,小编小编提供了弹指间融洽的缓慢解决方案。

 

世襲系统调整器基类:

貌似都会建二个 basicViewController,作为主导视图  前边的每一种调控器 都会持续使用.

图片 1

继承BasicViewCtrl

图片 2

0框架控制器继承基类和自定义类示例,自定义基类。一连后会展现连续的ctrl是什么样类型

先来一波思路解析。后台重返的数额json(xml非常少人在用了啊)的门类的多寡格式有对象和数组,
字符串,数字布尔null,使用系统自带的NSJSONSerialization获取字典,会将对象转变为NSDictionary对象,数组转变为NSArray对象,字符串转变为NSString对象,数字和布尔类型转变为NSValue对象恐怕子类NSNumber对象,null转变为NSNull对象。json中的null那几个就必要小心了。java的后台程序恐怕是一向将model转变为json,当对象没开首化为null时,json就能鬼使神差null,而不是应当有的{}。null会转变为NSNull,可是大家以为他是目的类型,转化为了NSDictionary对象,然后调用了objectForkey,就能够报unRecognized selector exception使程序崩溃。关于这一点,作者早就和做后台的同事争吵过,说:你既然定义json中某key的值是指标类型,为空你也要传“{}”啊({}会转变为空字典类型),为何传null。他们周旋到:从数据库中查不到,就没必要开端化model对象,转变为json也就能够为null。小编一直无奈了。

猥琐的须求

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
  public function hello()
  {
    return 'hello,world';
  }
}

那边都会只持续 .h  .m文件中的生命周期的代码块,假设在.m中写了章程,此中能够在.h文件中评释.那样在子类也能够调用.

图片 3

子类调用父类的法门(在.h中宣示)

直接上代码吧。注释依然蛮清晰的,记得不要遗忘把那三个“安全设置”加上,不然,碰到手误,忘记定义的质量,程序又该崩溃了。setNilValueForKey:这些有的时候用,是定义assign类型的属性给它set
nil才会接触。加上也没多少。

  在行使 Java 的开源项目 JeeSite
时,养成了二个不佳的习于旧贯,习于旧贯给每张表都扩张create_by、create_date、update_by、update_date、remarks 和 del_flag
这么多少个字段。假设每张表都有那多少个字段,那么对每张表进行 insert
时都会对以上的字段进行安装,对每张表实行 update
时都会对内部黄金年代部分字段展开创新,对每条记下实行 delete 时都其实是对
del_flag 字段张开置位。重复操作非常多,一些操作方法被更改。那么,那时候将在自定义一个要好的
Model 来作为项目标 基类 了,这么些 Model 就担当干下面笔者说的那多少个事情了。

照旧自定义三个底子调节器类Base:

假设在xib中  成立控件 而不会三番两次展现.须要和谐手写在子类中一连父类的xib

图片 4

- (instancetype)initWithDic:(NSDictionary*)dic{ if (!dic || ![dic isKindOfClass:[NSDictionary class]]) { return nil; } if (self = [super init]) { for (NSString *key in [dic allKeys]) { id value = dic[key]; //1.处理对象类型和数组类型 if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) { [self setValue:value forKeyPath:key]; } //2.处理空类型:防止出现unRecognized selector exception else if ([value isKindOfClass:[NSNull class]]) {// [self setValue:nil forKey:key]; } //3.处理其他类型:包括数字,字符串,布尔,全部使用NSString来处理 else{ [self setValue:[NSString stringWithFormat:@"%@",value] forKeyPath:key]; } } } return self;}#pragma mark KVC 安全设置- setValue:value forUndefinedKey:(NSString *)key{ NSLog(@"%s",__func__);}- setNilValueForKey:(NSString *)key{ NSLog(@"%s",__func__);}

 

<?php
namespace app\index\controller;
use think\Controller;
class Base extends Controller
{
}

JSONModel有二个好处,正是我们在po或许log打字与印刷model对象的时候回直接呈现他的属性值。其实正是重写description方法而已。大家也来一波自定义:

发表评论

电子邮件地址不会被公开。 必填项已用*标注