社区
Framework
帖子详情
讨论一下,关于plugin的实现
helloyou0
2010-08-21 12:38:02
关于plugin的实现,都来谈谈你熟悉的什么开源系统里是如何实现plugin的吧,
尤其你觉得比较好的.
我了解vbulletin和wordpress的, 嗯,还有gallery的,
但是都是不是太满意, 看看其它的有无更好的.
如果你有自己的想法,也说说看吧
...全文
165
11
打赏
收藏
讨论一下,关于plugin的实现
关于plugin的实现,都来谈谈你熟悉的什么开源系统里是如何实现plugin的吧, 尤其你觉得比较好的. 我了解vbulletin和wordpress的, 嗯,还有gallery的, 但是都是不是太满意, 看看其它的有无更好的. 如果你有自己的想法,也说说看吧
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
helloyou0
2010-09-15
打赏
举报
回复
帖子不顶就是不行....
青蛙现在越来越能侃了... :) 说得很好, php就是太自由...缺少规范....缺少统一的平台....不过自由也有好处,就是谁都可以拿来创新一下...所以PHP的开源最多...
我对兼容不太在意...目前的情况下,除非在php层面,否则不太可能在不同php软件间兼容.
对我来说,plugin的好处就是在改变功能的时候可以不触及核心代码,这个对一些经常需要定制的软件非常好,....咳咳,这些客户和领导们提变态需求的想象力总是超出程序员的想象....
前几天翻手册看到这章,
http://ca.php.net/manual/en/ref.runkit.php
不过好像更新不够, 这个东东用来做插件倒是够强大.......
就是太强大了以至于没法控制....如果滥用,这个代码上帝也要看昏掉...
话说回来,还有什么开源项目的plugin设计能推荐给我看的吗? 谢谢
helloyou0
2010-08-25
打赏
举报
回复
很好,很好,谢谢
还有别的值得一看的吗
骄傲青蛙
2010-08-25
打赏
举报
回复
我觉得plug最大问题是
兼容性
,次之是灵活性,安全性。
例一,
就拿dz说事, 写dz的plug,但它不能应用基于其核心产品各个系统应用程序,在dz的里的插件不能放到uchome里用,之类。
提到这点,可以说是个代码封装的问题,php的产品都独立存在和发展,和asp.net一样,在.net中,你写一个用户控件可以应用到任何的产品,这点非常好,重用率高。
而php不能,discuz的插件不能拿到workpress里用,如上所说,php产品之间相对较独立,低偶合所决定,它没像.net一样的平台。
例二,
如分页函数/类,在一个项目里你可能把它封装叫插件,但这个插件却没办法应用到另一个项目,
因为很可能它们之前分别实现的M.V.C层都不一样,输入和输出都以不同形式进行。
假设,如果php有像.net一样的平台,我们做的插件就可以基于这个平台或协议来开发插件,这样重用率高,提高生产效率的同时能节省很多的时间去做设计。
小结
假设,我们PHP项目的V层都统一用smarty去做,所有业务功能,如html escape, nl2br, bbcode2html之类的都用smarty处理,或者通过插件方式去完成,这样,我们的workpress里的插件就可移植到其它项目,如drupal
V层这么做,而M层和C层也由成熟的产品去完成,这样我们的插件才更通用,如果插件机制都统一起来了,大家讨论时不必顾虑太多环境因素,经验上的差别,这有助于插件方面的发展和进步。
如你所说的从vbulletin到wordpress, gallery他们实现插件的机制其实都是大同小异,但就是有不同地方,因为它们不统一,你做你的,我做我的,
程序员写插件的时间都用在看手册,重新了解各个系统特性,而不是用在对插件的统一改善,更新,升级,还有共同的讨论和进步,
phper_cd
2010-08-24
打赏
举报
回复
drupal的写法还不错,启用的时候执行xxx.install文件和xxx.module文件,而且基本都是在实现hook,xxx.info保存着模块信息,各个分工都很明确
xuzuning
2010-08-24
打赏
举报
回复
插件无非就是一个功能模块,他通过指定的规则与主系统交换信息。当然应该封装成类
helloyou0
2010-08-24
打赏
举报
回复
[Quote=引用 2 楼 jameshooo 的回复:]
PHP反正是动态解析名称的,用名称约束可能是最简洁的插件机制,无论是用函数还是类成员都一样,发现存在这种名称就当成插件调用。然后在参数上增加一些约定,或者核心提供某些API或工具类给插件使用。
[/Quote]
你说的这个,有无实际应用的开源项目? 想看看,
粗粗想想觉得还行,但是有时实际使用会有意料之外的问题
helloyou0
2010-08-24
打赏
举报
回复
[Quote=引用 1 楼 amani11 的回复:]
值得深究的话题,LZ先说说,不满意在哪里呢?
个人觉得关键在于对插件的管理方式?,如果这个需求是定的,那核心系统设计上,对plugin的管理模块也就定了,具体的插件,也只能按照规范来开发。
MARK,聆听高见
[/Quote]
vbulletin的比较原始,实际就等于直接插代码进去,开发不方便,变量容易冲突,也容易互相影响。
wordpress稍微改进一点不过本质也是一样的,这2个都是因为主软件都是非面向对象的,所以插件代码也不容易封装。
gallery2的看着较好,不过没有细研究。
主要想看看大家用过的有无更好的,值得学习的。
jameshooo
2010-08-24
打赏
举报
回复
嗯,参考drupal的扩展机制,全是用名称实现钩子,不一定需要注册后才调用,合适的函数名、类成员名、文件名,只要放在那,让drupal自己来找
liangpei2008
2010-08-24
打赏
举报
回复
那楼主先说说你理想中的插件是什么样的
jameshooo
2010-08-21
打赏
举报
回复
PHP反正是动态解析名称的,用名称约束可能是最简洁的插件机制,无论是用函数还是类成员都一样,发现存在这种名称就当成插件调用。然后在参数上增加一些约定,或者核心提供某些API或工具类给插件使用。
amani11
2010-08-21
打赏
举报
回复
值得深究的话题,LZ先说说,不满意在哪里呢?
个人觉得关键在于对插件的管理方式?,如果这个需求是定的,那核心系统设计上,对plugin的管理模块也就定了,具体的插件,也只能按照规范来开发。
MARK,聆听高见
VelaUX的
Plugin
机制及
实现
原理
本文详细阐述了VelaUX的
Plugin
机制,包括
Plugin
的开发流程,如何利用
Plugin
机制扩展UI控制台,以及如何通过接口代理转发至KubernetesAPI和自定义服务。开发者可以借此了解如何为VelaUX定制化界面并接入自定义功能。
Capacitor
Plugin
实现
本文档介绍了如何使用Visual Studio Code打开插件文件,并在src目录下编写方法定义。在definitions.ts中定义方法,然后在web.ts中
实现
。接着,展示了在iOS平台上(Xcode)如何在
Plugin
.m和
Plugin
.swift中定义及
实现
插件方法。同时,提供了在
Plugin
.java中为Android平台
实现
相应方法的步骤。参考链接提供了更多详细信息。
Qt -
Plugin
本文介绍了Qt插件相关内容。插件是遵循规范编写的程序,有动态和静态两种形式。插件工程需
实现
接口,主工程要定义插件接口,分动态和静态
实现
方式。还介绍了Q_DECLARE_INTERFACE、Q_
PLUGIN
_METADATA、Q_INTERFACES几个宏的作用,最后提及了Qt自带插件。
Qt
plugin
系统的几点说明
本文深入探讨Qt的
plugin
系统,包括如何创建和调用
plugin
,重点解释了
plugin
的
实现
原理,以及不同级别的
plugin
的区别。此外,介绍了如何利用Q_EXPORT_
PLUGIN
2宏在Qt中创建
plugin
,并阐述了
plugin
在Qt中的应用实例。
TensorRT
plugin
实现
总结
本文详细介绍了TensorRT中
Plugin
类和
Plugin
Factory类的
实现
。
Plugin
类需继承I
Plugin
Ext并重写多个虚函数,还需两个构造函数和一个析构函数。
Plugin
Factory类继承特定接口,重写create
Plugin
方法。此外,还提到TensorRT 6.0开始支持以
Plugin
IOEXT为基类的
plugin
,接口有变化。
Framework
4,250
社区成员
4,522
社区内容
发帖
与我相关
我的任务
Framework
国内外优秀PHP框架讨论学习
复制链接
扫一扫
分享
社区描述
国内外优秀PHP框架讨论学习
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章