```
## 命名空间
```
```
extend\email\Aindex.php
~~~
namespace email;
class Aindex
{
}
~~~
~~~
namespace email;
use Symfony\Component\OptionsResolver\OptionsResolver;
class Aindex
{
private $options;
/** * Email constructor. * * @param array $options */
public function __construct(array $options = [])
{
$this->setOptions($options);
}
/** * @return mixed */
public function getOptions()
{
return $this->options;
}
/** * @param array $options */
public function setOptions(array $options) //void
{
$this->options = $this->configureOptions($options, function (OptionsResolver $resolver) {
$resolver->setDefaults(['host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => 25,]);
$resolver->setRequired(['host', 'username', 'password', 'port']);
$resolver->setAllowedTypes('host', 'string');
$resolver->setAllowedTypes('username', 'string');
$resolver->setAllowedTypes('password', 'string');
$resolver->setAllowedTypes('port', 'int');
});
}
/** * Configuration options. * * @param \Closure $closure * @param null $object * * @return array */
protected function configureOptions(array $options, $closure, $object = null)
{
$resolver = new OptionsResolver();
$closure($resolver);
if ($object) {
return $object->options = $resolver->resolve($options);
}
if (is_object($object)) {
return $object->options = $resolver->resolve($options);
}
if (is_string($object) && class_exists($object)) {
$object = new $object();
return $object->options = $resolver->resolve($options);
}
return $resolver->resolve($options);
}
}
~~~
```
```
application\copyy\controller\Index.php
~~~
namespace app\copyy\controller;
use library\Controller;
use think\Loader;
/**
* 应用入口
* Class Index
* @package app\index\controller
*/
class Index extends Controller
{
/**
* 入口跳转链接
*/
public function index()
{
// $this->redirect('@admin/login');
dump('0123');
$email = new \email\Aindex();
//$email =new \Email([ 'host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => 25,
//]);
dump($email);
}
}
~~~
~~~
namespace app\copyy\controller;
use library\Controller;
use think\Loader;
/**
* 应用入口
* Class Index
* @package app\index\controller
*/
class Index extends Controller
{
/**
* 入口跳转链接
*/
public function index()
{
// $this->redirect('@admin/login');
dump('0123');
$s = [ 'host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => '25'];
try{
$email = new \email\Aindex($s);
}catch(\think\Exception $e){
dump($e);
}
}
}
~~~
```
- extend加入模块
- array_column() expects parameter 1 to be array, object given
- tp5.1安装No input file specified.
- ROOT
- wechatDeveloper
- ThinkLibrary
- 语法错误: unexpected '?'
- Cannot use object of type stdClass as array
- Invalid argument supplied for foreach()
- 常量上传
- 命名空间extend_email_Aindex
- Validate
- 'cross-env' 不是内部或外部命令,也不是可运行的程序
- 内置规则
- composer self-update
- cURL error 60: SSL certificate problem
- GuzzleHttp_Client_cookie_true
- cookies原始字符串转换为数组
- 设置cookie
- apidoc
- 原生安装tp5
- array_unique
- explode
- tp3修改密码
- tp打印SQL
- tp5一对一关联
- allowField
- array_column
- array_key_exists
- array_search
- tp5如何引入自定义函数
- with
- with闭包
- 绑定类
- composer A
- array_filter用回调函数过滤数组中的元素
- array_keys
- array_slice截取前两个
- fetch_assoc
- in_array是否存在指定的值
- is_null
- join
- krsort对数组排序
- array-udiff
- shuffle
- substr
- unset删除多维数组key
- 多维转一维函数
- 数组变成字符串implode
- 数组分割
- 数组取差集
- 随机函数array_rand
- 一维变二维
- 字符串包裹变量
- 字符串汉字截取mb_substr
- 直接使用composer命令
- 安装vendor
- composer命令
- 复制安装
- 空目录安装
- tp5cms
- tp5调试
- tp3调试
- TP5一对一关联
- SQL语句
- 清空数据
- 去重
- 去重保留最小id
- 去重匹配除数字外数据
- 事务
- tp5pdf乱码
- tp5column_tp3getFieldtrue
- php代码在线测试,php在线执行
- parent::_initialize