扩展lua-resty- *模块并调用父函数

时间:2015-07-29 07:36:58

标签: lua openresty

我正在尝试为每个lua-resty-redislua-resty-memcachedlua-resty-mysql模块编写一个扩展默认模块的小类。在我的子类中,我想从父类调用一个函数,但无论我阅读的Lua的继承文档是什么,都无法找到正确的方法。

例如,我想覆盖connect()函数,执行某些操作并在某个时候调用父{h} connect()函数。但是如何?

local redis = require "resty.redis"


function redis.connect(self, ...)


  -- Do some stuff here


  local ok, err = parent:connect(...)


  -- Do some other stuff here


  return ok, err
end

如何实现这一目标?

作为一个说明,所有上述模块的结构都是这样的:

local _M = { _VERSION = "0.1" }

local mt = { __index = _M }

function _M.new(self)
    return setmetatable({ foo = "bar" }, mt)
end

function _M.connect(self, ...)
    -- Connect
end

return _M

提前谢谢!

1 个答案:

答案 0 :(得分:1)

local redis = require "resty.redis"
local original_connect = redis.connect

function redis.connect(self, ...)


  -- Do some stuff here


  local ok, err = original_connect(self, ...)


  -- Do some other stuff here


  return ok, err
end