# tp中app()函数自定义的没提示问题
1.虽然 app()->sms->send 这样感觉还不够,问题是 app()->cahce都有代码提示,app()->sms 就没提示,也很不方便,为什么 app()->cache有提示呢?
![](https://img.kancloud.cn/34/cb/34cbd7ff7246ff5461d3129058339788_1000x331.png)
![](https://img.kancloud.cn/2a/db/2adbc2fdc025c0be280d9c370a695670_1044x639.png)
2.如果自己写的类,也要有提示。去修改APP这个类也不太好吧。自己模拟一个吧。
3. app\\common.php, 做一个app2
```
use think\Container;
if (!function_exists('app2')) {
/**
* @return \test\App2 --------这里注明了,返回的是 App2这个类
*/
function app2(string $name = '', array $args = [], bool $newInstance = false)
{
return Container::getInstance()->make($name ?: \test\App2::class, $args, $newInstance);
}
}
```
4.app2代码, 其中的代码,如果不明白,不用纠结,后面,我会出图解tp6内核,
(关于test这个自定义命名空间,就是在 extend建个test目录,把类写里就可以了)
```
namespace test;
/**
* @property AliSms $sms
*/
class App2 extends \think\Container
{
public function __construct(string $rootPath = '')
{
//初始化4个目录
$appPath = app()->getAppPath();
//加provider 加入到容器绑定标识中
if (is_file($appPath . 'provider.php')) {
$this->bind(include $appPath . 'provider.php');
}
}
}
```
5.写代码就有提示啦
![](https://img.kancloud.cn/96/67/96675cb92b3c62c95bc5363c09e6759a_860x474.png)
![](https://img.kancloud.cn/32/64/3264568c3974219ac912fb67bf6c9167_919x241.png)
- 1、面向对象编程
- 写的第一个接口
- 类、对象
- 面象对象之前-面向过程编程
- public、protected、private
- 魔法函数
- 接口
- 依赖注入
- 2、简单工厂
- 现实问题举例
- 现实问题解决办法
- 程序问题举例
- 程序解决办法
- 在THINKPHP6中的应用
- TP6中,把自己写的类放到工厂中去
- tp中app()函数自定义的没提示问题
- 3、外观模式
- 外观模式-现实问题举例
- 外观模式-现实问题解决办法
- 程序问题举例2
- 在THINKPHP6中的影子
- 外观模式--个人感想
- 4、适配器模式
- 现实问题举例3
- 实现场景
- 程序举例
- 5、单例模式
- 现实问题举例4
- 现实问题解决办法4
- 程序举例4
- 改进1
- THINKPHP6中的单例
- TP容器实现的“单例”
- 6、生成器模式
- 举例5
- php代码举例
- 代码分析
- php代码调整
- 再次改进,就是生成器模式了
- 对生成器模式的个人感想
- 7、原型模式
- 模式目地
- 实现举例
- 代码举例
- 浅克与深克
- 8、中介者模式
- 中介者-定义
- 中介者-结构
- 中介者-php代码举例
- 中介者-实际项目的一个例子
- 中介者-实际项目PHP
- 9、代理模式
- 代理模式-现实问题举例
- 代理模式-php代码
- 10、观察者模式
- 小时候煮饭的例子
- 观察者-编程中的问题
- 观察者-php代码举例
- 观察者-thinkphp6中的应用
- 11、命令模式
- 命令模式-定义
- 命令模式-php代码举例
- 命令模式-个人感觉
- 12、迭代器模式
- 迭代器-定义
- 虚构的分享微信美女故事
- 迭代器-php代码举例 - 不想完全公布的问题
- 迭代器-php代码举例 - 解决办法
- 13、组合模式
- 组合模式定义
- 组合模式-实际项目举例
- 组合模式-问题
- 组合模式-如果图片也有这个接口呢
- 真正的组合模式-例子
- 14、模板方法模式
- 模板方法-定义
- 模板方法-现实参考
- 模板方法-项目问题举例
- 模板方法-未用模式的代码
- 模板方法-使用模式的代码
- 15、策略模式
- 策略模式-定义
- 策略-虚构现实案例
- 策略-虚构现实案例PHP代码
- 策略-实际项目举例
- 策略-实际项目举例PHP代码-未使用模式
- 策略-实际项目举例PHP代码-使用模式
- 16、状态模式
- 状态模式定义
- 状态模式-实现案例
- 状态模式-未使用模式
- 状态模式-使用模式
- 17、备忘录模式
- 备忘录模式-定义
- 备忘录-形式图形
- 备忘录-比较真统的php代码
- 备忘录-实际项目想到的例子
- 备忘录-实际例子代码
- 18、享元模式
- 享元模式-定义
- 享元模式-看电影故事
- 享元模式-图形
- 享元模式-看电影PHP代码
- 享元模式-THINKPHP6中的应用
- 19、解释器模式
- 解释器-定义
- abc加减解释器例子
- 解释器-图解算法
- 解释器-三种类型对应的php代码
- 解释器-完整的代码
- 解释器-感觉
- 20、装饰模式
- 装饰模式-定义
- 装饰模式-快餐举例
- 装饰模式-php代码
- 装饰者模式-实际案例
- 21、责任链模式
- 责任链-定义
- 责任链-面试的例子
- 责任链-面试php代码
- 责任链-THINKPHP6中用应用
- 22、桥接模式
- 桥接模式-定义
- 桥接模式-案例举例
- 桥接模式-问题是怎么来的呢
- 桥接模式-使用模式后的代码
- 23、访问者模式
- 访问者-定义
- 访问者-结构关系
- 访问者-php代码举例