教程详情
- 教程名字:2017泰牛PHP大牛班
- 教程大小:17.2GB
- 作者:泰牛
├─02_2017泰牛PHP大牛班1
│ ├─DAY13
│ │ 01.PHP标示符.itbull.avi
│ │ 02.PHP分割指令符号-分号.itbull.avi
│ │ 03.PHP程序注释.itbull.avi
│ │ 04.PHP混编方式.itbull.avi
│ │ 05.变量的介绍和声明.itbull.avi
│ │ 06.可变变量.itbull.avi
│ │ 07.变量的传值方式.itbull.avi
│ │ 08.变量的作用域.itbull.avi
│ │ 09.变量常用的5个函数.itbull.avi
│ │ 10.预定义变量-GLOBALS-SEVER-FILES.itbull.avi
│ │ 11.预定义变量-REQUEST.itbull.avi
│ │ 12.常量.itbull.avi
│ │ 13.魔术常量.itbull.avi
│ │
│ ├─DAY14
│ │ 01.回顾.itbull.avi
│ │ 02.数据类型-string.itbull.avi
│ │ 03.数据类型-常用字符串函数.itbull.avi
│ │ 04.数据类型-int.itbull.avi
│ │ 05.数据类型-float.itbull.avi
│ │ 06.数据类型-boolean.itbull.avi
│ │ 07.数据类型-object.itbull.avi
│ │ 08.数据类型-null-resource.itbull.avi
│ │ 09.数据类型-手册提供的几个类型.itbull.avi
│ │ 10.数据类型-转换.itbull.avi
│ │ 11.运算符-算数运算符.itbull.avi
│ │ 12.运算符-赋值运算符.itbull.avi
│ │ 13.运算符-比较运算符.itbull.avi
│ │ 14.运算符-错误抑制运算符.itbull.avi
│ │ 15.运算符-递增和递减运算符.itbull.avi
│ │ 16.运算符-逻辑运算符.itbull.avi
│ │ 17.运算符-字符串运算符.itbull.avi
│ │
│ ├─DAY15
│ │ 01.位运算符--二进制.itbull.avi
│ │ 02.位运算符--原码、反码、补码.itbull.avi
│ │ 03.位运算符--使用位运算.itbull.avi
│ │ 04.数组运算符.itbull.avi
│ │ 05.流程控制--if和ifelse.itbull.avi
│ │ 06.流程控制--elseif和switch.itbull.avi
│ │ 07.流程控制--while循环.itbull.avi
│ │ 08.流程控制--dowhile循环.itbull.avi
│ │ 09.流程控制--for循环.itbull.avi
│ │ 10.案例-百钱买百鸭.itbull.avi
│ │ 11.流程控制--循环案例.itbull.avi
│ │ 12.流程控制--break.itbull.avi
│ │ 13.流程控制--continue--和break的区别.itbull.avi
│ │ 14.流程控制--goto语句.itbull.avi
│ │ 15.流程控制--return语句.itbull.avi
│ │ 16.流程控制--文件的加载.itbull.avi
│ │
│ ├─DAY16
│ │ 01.回顾.itbull.avi
│ │ 02.函数的介绍.itbull.avi
│ │ 03.函数的调用机制.itbull.avi
│ │ 04.函数的封装.itbull.avi
│ │ 05.可变函数.itbull.avi
│ │ 06.回调函数.itbull.avi
│ │ 07.匿名函数.itbull.avi
│ │ 08.内部函数.itbull.avi
│ │ 09.递归调用.itbull.avi
│ │ 10.网站布局方式.itbull.avi
│ │
│ └─DAY17
│ 01.回顾.itbull.avi
│ 02.数组的介绍.itbull.avi
│ 03.数组的创建方式.itbull.avi
│ 04.数组的的细节.itbull.avi
│ 05.数组的覆盖-增长-分类.itbull.avi
│ 06.数组的遍历--for循环遍历.itbull.avi
│ 07.数组的遍历--foreach循环遍历.itbull.avi
│ 08.数组的遍历--while+each+list.itbull.avi
│ 09.数组的遍历--几个常用的函数.itbull.avi
│ 10.数组的遍历--多维数组.itbull.avi
│ 11.冒泡排序.itbull.avi
│ 12.选择排序.itbull.avi
│
├─02_2017泰牛PHP大牛班2
│ ├─DAY18
│ │ ├─上午
│ │ │ 01-学习技术的方法 面向对象的快速入门.itbull.avi
│ │ │ 02-面向对象的介绍.itbull.avi
│ │ │ 03-成员属性.itbull.avi
│ │ │ 04-对象的传递方式.itbull.avi
│ │ │ 05-成员方法.itbull.avi
│ │ │
│ │ └─下午
│ │ 06-成员方法(2).itbull.avi
│ │ 07-成员方法(3).itbull.avi
│ │ 08-构造函数(1)基本使用.itbull.avi
│ │ 09-构造函数(2)细节说明.itbull.avi
│ │ 10-默认构造函数.itbull.avi
│ │ 11-构造函数小结和this.itbull.avi
│ │ 12-析构函数基本介绍 php程序执行流程.itbull.avi
│ │ 13-析构函数详解和最佳实践.itbull.avi
│ │ 14-垃圾回收机制(了解).itbull.avi
│ │
│ ├─DAY19
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-访问修饰符的基本介绍.itbull.avi
│ │ │ 03-get 和 作业的评讲.itbull.avi
│ │ │ 04-__set .itbull.avi
│ │ │ 05-补充说明 .itbull.avi
│ │ │
│ │ └─下午
│ │ 06-toString 和 补充了知识点 .itbull.avi
│ │ 07-__clone 和对象的比较.itbull.avi
│ │ 08-__call魔术方法.itbull.avi
│ │ 09-类的自动加载.itbull.avi
│ │ 10-静态属性.itbull.avi
│ │
│ ├─DAY20
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-作业点评.itbull.avi
│ │ │ 03-静态方法的基本介绍和细节讨论.itbull.avi
│ │ │ 04-静态方法最佳实践-单例模式(1).itbull.avi
│ │ │ 05-静态方法最佳实践-单例模式(2).itbull.avi
│ │ │
│ │ └─下午
│ │ 06-抽象.itbull.avi
│ │ 07-封装入门.itbull.avi
│ │ 08-如何操作属性(protected 和 private) 三种方式.itbull.avi
│ │ 09-封装的细节和对象运算符的连用.itbull.avi
│ │ 10-继承的基本介绍.itbull.avi
│ │
│ ├─DAY21
│ │ ├─上午
│ │ │ 01-重载1.itbull.avi
│ │ │ 02-对静态方法的重载.itbull.avi
│ │ │ 03-重载的方法的课堂练习评讲.itbull.avi
│ │ │ 04-属性的重载.itbull.avi
│ │ │ 05-方法重写的基本介绍.itbull.avi
│ │ │ 06-方法重写的细节说明.itbull.avi
│ │ │
│ │ └─下午
│ │ 07-方法重写的细节.itbull.avi
│ │ 08-属性重写.itbull.avi
│ │ 09-多态.itbull.avi
│ │ 10-练习题.itbull.avi
│ │ 11-练习题.itbull.avi
│ │ 12-抽象类的介绍.itbull.avi
│ │ 13-抽象类的细节说明.itbull.avi
│ │ 14-接口的讲解.itbull.avi
│ │ 15-接口的讲解2.itbull.avi
│ │
│ ├─DAY22
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-接口的基本介绍.itbull.avi
│ │ │ 03-接口的细节讨论.itbull.avi
│ │ │ 04-接口和继承的比较.itbull.avi
│ │ │ 05-final.itbull.avi
│ │ │ 06-类常量.itbull.avi
│ │ │
│ │ └─下午
│ │ 07-对象遍历.itbull.avi
│ │ 08-内置标准类.itbull.avi
│ │ 09-数据类型和对象相互转换.itbull.avi
│ │ 10-序列化和反序列化的基本介绍.itbull.avi
│ │ 11-序列化和反序列化的细节说明.itbull.avi
│ │ 12-类与对象的相关函数说明.itbull.avi
│ │ 13-traits.itbull.avi
│ │ 14-反射机制的第一次接触.itbull.avi
│ │ 15-反射代理调用.itbull.avi
│ │ 16-反射综合练习.itbull.avi
│ │
│ ├─DAY23
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-mysql数据库基本介绍(1).itbull.avi
│ │ │ 03-mysql数据库基本介绍(2)-安装mysql.itbull.avi
│ │ │ 04-mysql数据库基本介绍(3)-mysql基本使用.itbull.avi
│ │ │ 05-mysql数据库基本介绍(4)-三层结构.itbull.avi
│ │ │ 06-mysql数据库基本介绍(5)-sql语句分类.itbull.avi
│ │ │ 07-创建数据库的基本介绍.itbull.avi
│ │ │ 08-字符集和校验规则.itbull.avi
│ │ │
│ │ └─下午
│ │ 09-数据库常用操作.itbull.avi
│ │ 10-数据库的修改,备份和恢复.itbull.avi
│ │ 11-创建表.itbull.avi
│ │ 12-整型.itbull.avi
│ │ 13-zerofill.itbull.avi
│ │ 14-bit.itbull.avi
│ │ 15-float 和 decimal.itbull.avi
│ │
│ ├─DAY24
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-字符串类型(1).itbull.avi
│ │ │ 03-字符串类型(2).itbull.avi
│ │ │ 04-日期类型.itbull.avi
│ │ │ 05-enum 和 set.itbull.avi
│ │ │ 06-小练习 和 对齐数据技巧.itbull.avi
│ │ │ 07-修改表.itbull.avi
│ │ │
│ │ └─下午
│ │ 08-insert 语句和综合案例的程序框架图.itbull.avi
│ │ 09-综合案例的curd.itbull.avi
│ │ 10-select 语句的基本使用.itbull.avi
│ │ 11-select 语句的基本使用(2).itbull.avi
│ │
│ └─DAY25
│ ├─上午
│ │ 01-回顾.itbull.avi
│ │ 02-聚合函数count.itbull.avi
│ │ 03-聚合函数sum.itbull.avi
│ │ 04-聚合函数avg.itbull.avi
│ │ 05-聚合函数max min.itbull.avi
│ │ 06-聚合函数group by.itbull.avi
│ │ 07-mysql的日期函数(1).itbull.avi
│ │
│ └─下午
│ 08-日期函数(3).itbull.avi
│ 09-字符串函数.itbull.avi
│ 10-数学函数.itbull.avi
│ 11-分支控制函数.itbull.avi
│ 12-其它函数.itbull.avi
│ 13-select 语句的加强(1)-where子句加强.itbull.avi
│ 14-select 语句的加强(2)-order by子句加强.itbull.avi
│ 15-select 语句的加强(3)-分页查询.itbull.avi
│
├─02_2017泰牛PHP大牛班3
│ ├─DAY26
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-聚合函数加强.itbull.avi
│ │ │ 03-group by having加强.itbull.avi
│ │ │ 04-作业的评讲.itbull.avi
│ │ │ 05-分组统计的小结.itbull.avi
│ │ │ 06-多表查询的基本介绍 笛卡尔集.itbull.avi
│ │ │ 07-多表查询的练习和完成的思路分析.itbull.avi
│ │ │ 08-自连接.itbull.avi
│ │ │ 09-子查询(单行子查询和多行子查询).itbull.avi
│ │ │ 10-子查询(多列子查询).itbull.avi
│ │ │ 11-from 子句.itbull.avi
│ │ │
│ │ └─下午
│ │ 12-作业评讲 去重复.itbull.avi
│ │ 13-合并查询union union all.itbull.avi
│ │ 14-mysql 内连接.itbull.avi
│ │ 15-外连接和作业.itbull.avi
│ │ 16-主键约束.itbull.avi
│ │ 17-unique的说明.itbull.avi
│ │ 18-外键约束.itbull.avi
│ │ 19-check约束.itbull.avi
│ │ 20-创建表的综合练习.itbull.avi
│ │ 21-表的约束的维护(增删改查).itbull.avi
│ │ 22-表的约束的维护(增删改查)2.itbull.avi
│ │
│ ├─DAY27
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-自增长.itbull.avi
│ │ │ 03-索引的原理.itbull.avi
│ │ │ 04-索引的类别.itbull.avi
│ │ │ 05-主键索引和唯一索引.itbull.avi
│ │ │ 06-普通索引和全文索引.itbull.avi
│ │ │ 07-索引注意.itbull.avi
│ │ │
│ │ └─下午
│ │ 08-事务的介绍.itbull.avi
│ │ 09-php程序中实现事务.itbull.avi
│ │ 10-事务隔离级别(1).itbull.avi
│ │ 11-事务隔离级别(2).itbull.avi
│ │ 12-存储引擎 .itbull.avi
│ │ 13-视图.itbull.avi
│ │ 14-用户管理.itbull.avi
│ │
│ ├─DAY28
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-mysql扩展的回顾.itbull.avi
│ │ │ 03-mysqli扩展基本介绍.itbull.avi
│ │ │ 04-使用mysqli完成查询操作.itbull.avi
│ │ │ 05-mysqli扩展细节(1).itbull.avi
│ │ │ 06-mysqli扩展细节(2).itbull.avi
│ │ │ 07-mysqli扩展细节(3).itbull.avi
│ │ │ 08-DAOMysQLi的基本介绍.itbull.avi
│ │ │ 09-DAOMysQLi开发(1).itbull.avi
│ │ │
│ │ └─下午
│ │ 10-DAOMySQLi对象-查询.itbull.avi
│ │ 11-DAOMySQLi对象-dml 和 作业布置.itbull.avi
│ │ 12-mysqli扩展的事务控制.itbull.avi
│ │ 13-mysqli批量执行sql.itbull.avi
│ │ 14-mysqli预处理的讲解1.itbull.avi
│ │ 15-mysqli预处理的讲解2.itbull.avi
│ │
│ ├─DAY29
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-http协议的引入.itbull.avi
│ │ │ 03-http协议运行的流程图.itbull.avi
│ │ │ 04-虚拟主机配置.itbull.avi
│ │ │ 05-如何抓包.itbull.avi
│ │ │ 06-http请求一个页面和该页面内容的说明.itbull.avi
│ │ │ 07-http请求的基本介绍.itbull.avi
│ │ │ 08-http请求的细节(1).itbull.avi
│ │ │
│ │ └─下午
│ │ 09-http请求行的细节(2).itbull.avi
│ │ 10-http请求消息头及应用案例1.itbull.avi
│ │ 11-http请求消息头应用案例2.itbull.avi
│ │ 12-http响应基本介绍.itbull.avi
│ │ 13-http响应的状态码.itbull.avi
│ │ 14-http协议的响应消息头-和作业.itbull.avi
│ │ 15-预定义超全局数组的基本介绍和工作原理.itbull.avi
│ │ 16-如何接收表单提交的数据.itbull.avi
│ │ 17-预定义超全局数组.itbull.avi
│ │
│ ├─DAY30
│ │ ├─上午
│ │ │ 01-回顾.itbull.avi
│ │ │ 02-文件的基础介绍.itbull.avi
│ │ │ 03-获取文件信息.itbull.avi
│ │ │ 04-php读取文件(1).itbull.avi
│ │ │ 05-php读取文件(2).itbull.avi
│ │ │ 06-php读取文件(3).itbull.avi
│ │ │
│ │ └─下午
│ │ 07-创建文件并写入内容.itbull.avi
│ │ 08-删除文件 .itbull.avi
│ │ 09-修改文件 .itbull.avi
│ │ 10-目录操作 .itbull.avi
│ │ 11-遍历某个文件夹.itbull.avi
│ │ 12-统计某个文件夹的大小.itbull.avi
│ │ 13-删除目录和拷贝目录.itbull.avi
│ │ 14-小结.itbull.avi
│ │
│ ├─DAY31
│ │ ├─上午
│ │ │ 01.zendstudio编辑器的安装与简单使用.itbull.avi
│ │ │ 02.文件上传介绍.itbull.avi
│ │ │ 03.文件上传的简单实现.itbull.avi
│ │ │
│ │ └─下午
│ │ 04.限制上传的文件大小.itbull.avi
│ │ 05.给上传的文件取一个唯一的文件名.itbull.avi
│ │ 06.分目录存储上传的文件.itbull.avi
│ │ 07.限制上传的文件类型.itbull.avi
│ │ 08.将文件上传封装到类中.itbull.avi
│ │ 09.文件下载.itbull.avi
│ │
│ └─DAY32
│ ├─上午
│ │ 01.昨日重现.itbull.avi
│ │ 02.分页介绍、创建一个死的分页导航条.itbull.avi
│ │ 03.根据总的记录数、每页显示的记录动态创建分页导航.itbull.avi
│ │ 04.分页导航显示前3页、后3页.itbull.avi
│ │ 05.分页细节总结.itbull.avi
│ │ 06.商品列表、分页类综合应用.itbull.avi
│ │
│ └─下午
│ 07.分页类总结(可能是加密过的文件,请核实).wmv
│ 08.绘图介绍、绘制线条.itbull.avi
│ 09.绘制矩形、圆形、图像.itbull.avi
│ 10.绘制文字、弧形.itbull.avi
│ 11.创建画布、随机产生字符.itbull.avi
│ 12.将随机字符绘制到画布中.itbull.avi
│
├─02_2017泰牛PHP大牛班4
│ ├─DAY33
│ │ ├─上午
│ │ │ 01.验证码类在项目中的应用.itbull.avi
│ │ │ 02.图像压缩的入门案例.itbull.avi
│ │ │ 03.在指定范围内等比例压缩.itbull.avi
│ │ │ 04.封装图像压缩处理类.itbull.avi
│ │ │ 05.完善图像压缩处理兼容主流的图片格式.itbull.avi
│ │ │
│ │ └─下午
│ │ 06.完善分类---增加搜索功能(可能是加密过的文件,请核实).wmv
│ │ 07.会话介绍.itbull.avi
│ │ 08.cookie的原理、简单使用.itbull.avi
│ │ 09.cookie的细节.itbull.avi
│ │ 10.设置cookie时7个参数讲解.itbull.avi
│ │
│ ├─DAY34
│ │ ├─上午
│ │ │ 01.昨日内容回顾.itbull.avi
│ │ │ 02.session原理介绍、应用场景.itbull.avi
│ │ │ 03.session的基本操作(增删改查).itbull.avi
│ │ │ 04.session购物车练习.itbull.avi
│ │ │ 05.session防跳墙、验证码的验证.itbull.avi
│ │ │
│ │ └─下午
│ │ 06.session相关的配置.itbull.avi
│ │ 07.ini_set修改PHP配置文件.itbull.avi
│ │ 08.session的存储机制.itbull.avi
│ │ 09.和session存储相关的一些面试题.itbull.avi
│ │ 10.垃圾回收机制.itbull.avi
│ │ 11.重写session的存储机制.itbull.avi
│ │ 12.cookie、session的区别.itbull.avi
│ │
│ ├─DAY35
│ │ ├─上午
│ │ │ 01.会话机制复习.itbull.avi
│ │ │ 02.PDO介绍、简单使用.itbull.avi
│ │ │ 03.PDO和mysql扩展效率对比.itbull.avi
│ │ │ 04.使用PDO的增删改查操作.itbull.avi
│ │ │ 05.获得错误信息、引号转义包裹方法.itbull.avi
│ │ │ 06.quote方法防止sql注入.itbull.avi
│ │ │ 07.pdo事务的处理.itbull.avi
│ │ │
│ │ └─下午
│ │ 08.PDO的预处理.itbull.avi
│ │ 09.预处理优势、获得插入的记录的主键值.itbull.avi
│ │ 10.PDOStatement对象提供的常用方法.itbull.avi
│ │ 11.使用接口规范PDO类的方法、命名.itbull.avi
│ │ 12.声明接口、类实现接口规范的功能.itbull.avi
│ │ 13.实例化单利对象(三私一公).itbull.avi
│ │ 14.完成接口定义的方法.itbull.avi
│ │
│ ├─DAY36
│ │ ├─上午
│ │ │ 01.PDO复习.itbull.avi
│ │ │ 02.PDO类完善(关闭游标、执行增删改返回值、PDO异常类).itbull.avi
│ │ │ 03.模板引擎介绍.itbull.avi
│ │ │ 04.smarty模板引擎的介绍、简单使用.itbull.avi
│ │ │ 05.模板变量来源:配置文件、smarty保留变量.itbull.avi
│ │ │ 06.模板变量调节器(一).itbull.avi
│ │ │ 07.模板中使用http请求时的携带的变量.itbull.avi
│ │ │
│ │ └─下午
│ │ 08.实体转码、url转码.itbull.avi
│ │ 09.truncate字符串截取.itbull.avi
│ │ 10.模板中使用流程控制语句.itbull.avi
│ │ 11.smarty缓存的介绍、使用.itbull.avi
│ │ 12.局部不缓存.itbull.avi
│ │ 13.单模板多缓存.itbull.avi
│ │
│ ├─DAY37
│ │ ├─上午
│ │ │ 01.smarty复习.itbull.avi
│ │ │ 02.删除缓存.itbull.avi
│ │ │ 03.smarty的常用配置.itbull.avi
│ │ │ 04.自定义模板引擎(二).itbull.avi
│ │ │ 05.自定义模板引擎(一).itbull.avi
│ │ │ 06.错误类型、屏蔽错误、错误日志.itbull.avi
│ │ │ 07.自定义错误处理器.itbull.avi
│ │ │
│ │ └─下午
│ │ 08.异常的使用.itbull.avi
│ │ 09.命名空间介绍.itbull.avi
│ │ 10.定义命名空间.itbull.avi
│ │ 11.使用命名空间.itbull.avi
│ │ 12.命名空间导入.itbull.avi
│ │ 13.命名空间的动态语言特性.itbull.avi
│ │ 14.命名空间练习.itbull.avi
│ │
│ ├─DAY38
│ │ ├─上午
│ │ │ 01.昨日回顾.itbull.avi
│ │ │ 02.MVC介绍.itbull.avi
│ │ │ 03.模型层的封装.itbull.avi
│ │ │ 04.工厂类实例化单例模型对象.itbull.avi
│ │ │ 05.控制器层的封装.itbull.avi
│ │ │ 06.重新划分mvc的目录结构.itbull.avi
│ │ │
│ │ └─下午
│ │ 07.入口文件.itbull.avi
│ │ 08.自动加载介绍.itbull.avi
│ │ 09.给所有的类加上命名空间.itbull.avi
│ │ 10.根据类的提示信息,解析出类完整的路径.itbull.avi
│ │ 11.封装入口文件.itbull.avi
│ │ 12.完善自动加载.itbull.avi
│ │ 13.自动加载、封装入口文件总结.itbull.avi
│ │
│ ├─DAY39
│ │ ├─上午
│ │ │ 01.mvc框架复习.itbull.avi
│ │ │ 02.作业讲解.itbull.avi
│ │ │ 03.框架增加配置系统.itbull.avi
│ │ │ 04.框架中使用配置系统.itbull.avi
│ │ │ 05.项目中增加路径常量.itbull.avi
│ │ │
│ │ └─下午
│ │ 06.在基础模型中初始化真实表名.itbull.avi
│ │ 07.自动插入数据.itbull.avi
│ │ 08.自动删除.itbull.avi
│ │ 09.自动更新.itbull.avi
│ │ 10.自动查询.itbull.avi
│ │ 11.自动化处理总结.itbull.avi
│ │
│ └─DAY40
│ ├─上午
│ │ 01.工厂类增加模型的后缀、命名空间的判断.itbull.avi
│ │ 02.mvc复习---自动加载、配置文件、路径常量.itbull.avi
│ │ 03.自动化处理的总结.itbull.avi
│ │ 04.需求分析.itbull.avi
│ │ 05.数据表之间的关系.itbull.avi
│ │
│ └─下午
│ 06.根据需求创建数据表.itbull.avi
│ 07.项目规范(11163口诀).itbull.avi
│ 08.显示分类列表页(模板继承).itbull.avi
│ 09.添加分类.itbull.avi
│
└─02_2017泰牛PHP大牛班5
教程截图
教程下载
原文链接:【教程宝盒网】 https://www.jc-box.com/1026.html,转载请注明出处。
请先
!