前人栽树,后人乘凉,欢迎来到菜鸟梦工厂。这是本人第一次写技术博客,不足之处望各位大哥大姐见谅。
先介绍一下本人,本人是个小菜鸟,做开发6年多了,在一家公司任职码农,生活在一个三线城市,安逸的生活让我只想躺平。
写这篇文章缘由是一个同事问我一个问题,PHP如何实现一个工厂模式,一听到这问题,脑海里翻江倒海,就开始给他讲,吧啦吧啦开始给他说,最后问他听懂了吗,她含情脉脉看着我,好像懂了。看着无辜样子,我写一个demo给你看看吧。
<?php
/**
* 定义工厂类
*/
class Factory{
public static function __callStatic($name,$arguments)
{
return self::make($name,...$arguments);
}
public static function make($name, array $config)
{
return new $name($config);
}
}
//定义Wechat对象
class Wechat{
public function __construct($config)
{
echo "Wechat"."<br/>";
}
public function auth()
{
echo "我要认证";
}
}
//定义Wxapp对象
class Wxapp{
public function __construct($config)
{
echo "Wxapp"."<br/>";
}
public function auth()
{
echo "我要认证";
}
}
//Factory::wxapp([12,2,3,4,5]);
$app = Factory::wechat([12,2,3,4,5]);
$app->auth();
__callStatic 函数官方这么定义的:当对象访问不存在的静态方法时,__callStatic()方法会被自动调用
我们在__callStatic方法里面去make方法,用来创建我们想要的对象实例,这样就可以调用实例对象里面的方法了,是不是很简单。
工厂方法有很多写法,这里只是给出一个思路,大家可以举一反三