原标题:PHP AOP面向切面编程
AOP:Aspect Oriented Programming(面向切面编程)
字面解析:这里的切面(Aspect) 通常是指类的一个实例方法,也就是说其实我们只要在类的一个实例方法执行前或后面挂载前置或后置方法,有点像钩子,其实目的都是一样的,都是为了切分和扩展相应方法的功能,而不需要在原始方法里面改动。
题外话:什么是实例方法?就是类的方法前面没有 static 关键字修饰,并且只有类的实例被创建(new)出来之后才可以使用的方法。
实例1:模拟数据库的建立连接前后的动作
namespace Mysql;
class Database {
public function beforeConnect($connStr)
{
echo "before connectn";
}
public function afterConnect($connStr)
{
echo "after connectn";
}
public function connect($connStr)
{
$beforeMethod = "before".ucfirst(__FUNCTION__);
$args = func_get_args();
if(method_exists($this,$beforeMethod)){
call_user_func_array([$this,$beforeMethod], $args);</