首页 \ 问答 \ 将自定义Eloquent ORM模型添加到WHMCS版本6(Add custom Eloquent ORM models to WHMCS version 6)

将自定义Eloquent ORM模型添加到WHMCS版本6(Add custom Eloquent ORM models to WHMCS version 6)

WHMCS版本6使用Eloquent模型

他们使用的模型文件清楚地说明了如何访问WHMCS数据库。

我遇到的问题是我想访问自己的模型。 我有多个模型,一些直接访问WHMCS,另一些访问完全独立的数据库。

要使用他们的模型,你需要这样做: ... use WHMCS\User\Client; ... ... use WHMCS\User\Client; ...

我只是想这样做:

... use WHMCS\User\Client; use Radius\User\Logon; ...

我将模型添加到$ root_folder / includes / classes / Radius / User / Logon.php模仿WHMCS的文件夹结构。

但是,我收到一个错误Fatal error: Class 'Radius\User\Logon' not found in /var/www/vhosts/snowball.co.za/wh6.snowball.co.za/modules/servers/radius/radius.php on line 543

我完全怀疑我必须更新Composer以识别我自己的模型,但我不确定。 我所做的事情需要与WHMCS完全整合,并且不能破坏任何东西。

有人有建议吗?


WHMCS version 6 uses the Eloquent model.

Their using models documentation clearly states how to access the WHMCS database.

The problem I am experiencing is that I want to access my own model. I have multiple models, some that access WHMCS directly, and other that access a completely separate database.

To use their model, you do this: ... use WHMCS\User\Client; ...

I tried simply to do this:

... use WHMCS\User\Client; use Radius\User\Logon; ...

I added my models to $root_folder/includes/classes/Radius/User/Logon.php mimicking the folder structure of WHMCS.

However, I get an error Fatal error: Class 'Radius\User\Logon' not found in /var/www/vhosts/snowball.co.za/wh6.snowball.co.za/modules/servers/radius/radius.php on line 543

I fully suspect I have to update Composer to recognise my own models, but I am not sure. What I do needs to be fully integrated with WHMCS and it must not break anything.

Does anyone have advice?


原文:https://stackoverflow.com/questions/34020969
更新时间:2024-01-09 20:01

最满意答案

如果您使用Artifactory Pro运行,则可以使用用户插件开发自己的缓存失效机制。 以此插件为例。

这个想法是在Artifactory处理下载请求之前将资源标记为“过期”,从而使Artifactory将缓存版本替换为上游版本。 像这样的插件通常用于替换非官方支持的repo类型中的元数据文件(例如CRAN),但是您可以使用它来使任何通用文件到期。 此功能作为User Plugins Wiki上的beforeDownloadRequest注释块的一部分进行了记录。


If you are running with Artifactory Pro, you can develop your own cache invalidation mechanism using a User Plugin. Have a look at this plugin as an example.

The idea is to mark a resource as "expired" just before Artifactory processes the download request, making Artifactory replace the cached version with the upstream version. Plugins such as this one are usually used to replace metadata files in repo types that aren't officially supported (CRAN, for example), but you can use it to expire any generic file. This functionality is documented as part of the beforeDownloadRequest comment block on our User Plugins Wiki.

相关问答

更多
  • Simple Injector的批量注册工具主要侧重于通用接口上的注册。 ILinkRepository是一个非泛型接口,具有与非泛型实现的一对一映射。 如果要批量注册这些非泛型抽象,则必须自己编写LINQ查询,以反映程序集并获取类型并循环查询以注册这些类型。 没什么好看的,也没什么复杂的。 文档甚至展示了一些这方面的例子 。 但是有一个原因,简单的注射器并没有帮助你。 具有这种与基类的非通用存储库接口的设计至少可以说是难以理解的,正如本文所描述的那样 ,这样的设计违反了五个SOLID原则中的三个,这表明它 ...
  • 请参阅该方法的文档 。 它说: 重复 如果是,则计时器将重复安排自己直到无效。 如果为NO,计时器将在其触发后失效 。 See the documentation for the method. It says: repeats If YES, the timer will repeatedly reschedule itself until invalidated. If NO, the timer will be invalidated after it fires.
  • 对于您的用例,http端点是更好的解决方案。 您将消息推送到SNS,并且每个订阅的端点将在您托管的新api端点处被调用,从而清除缓存。 SQS在这里不是最好的用例 - 为了使用它,你需要有6个独立的队列(或每个服务器一个),你需要在每个队列上都有一个总是在后台运行的应用程序检查新消息并“拉”消息 - http端点是一个'推送'操作,这就是你想要的。 For your use case, the http endpoints is the better solution. You push a message ...
  • 从技术上讲,这是非常罕见的。 解决方案虽然非常简单: 如果你想使用在if中检查的值,那不是null,你可以在if中分配它,所以你不需要在else中再次从缓存中检索它: Connection conn; if ((conn = connectionCache.get(jdbc.getConnectionURL())) == null) { conn = DriverManager.getConnection(jdbc.getConnectionURL(), jdbc.getUs ...
  • 问题不在多个存储库中,而是在多个DbContext实例中。 EF告诉您,您无法一次将同一实体实例添加到多个上下文中。 因此共享存储库无济于事。 此外,拥有多个UoW共享单例存储库是通往地狱的道路。 处理并发(EF不是线程安全的),状态等是非常困难的。 要解决此问题,您应该: 共享工作单元,以便在单个业务操作中使用相同的UoW(和DbContext )实例 在将实体实例添加到另一个UoW之前创建它们的副本。 选择取决于您的具体情况。 The problem is not in multiple reposit ...
  • 一种方法是为每个数据库表创建一个存储库对象。 在DDD中,由于持久性无知的概念,数据库表通常不会与存储库进行一对一映射。 相反,存储库应该与集合一一对应。 当然,所有这些存储库类都可以从通用存储库接口派生。 储存库模式可能是一个滑坡。 虽然封装很好,但很容易被不必要的抽象带走。 在这里看看另一个角度。 聚合对象应该是这些存储库的容器,还是更多的是相关上下文的容器(意味着沿着Bounded DbContexts的行)? 看起来你所谓的“功能区”在DDD中被称为有界上下文 (BC)。 (在EF中不是DbCont ...
  • 这取决于您的约束,即您可以承受陈旧读取的时间长度(即缓存返回过时的数据)。 如果这根本不会造成伤害,JMS是一种通知所有成员的好方法,因为很容易确保每个成员最终获得“刷新”消息。 如果需要确保立即刷新过时的数据,可以使用JMS通过向游戏添加事务和请求/响应周期来协调刷新。 但这意味着如果你不小心,你可能会陷入死锁或饥饿的过程 - 这是你必须为同步付出的代价。 如果这让您感到困扰,那么问题就是您可以使用其他技术来实现相同的结果。 您可以使用RMI或套接字但是,您必须重新发明轮子(这意味着您将花费大量时间来获取 ...
  • 要解决竞争条件,请添加时间戳(或计数器)并在设置新的高速缓存条目时检查此时间戳。 这可确保不会缓存过时的响应。 这是一个伪代码: //set new cache entry if resourceId is not cached //or if existing entry is stale function setCache(resourceId, requestTimestamp, responseData) { if (cache[resourceId]) { if (cach ...
  • 如果您使用Artifactory Pro运行,则可以使用用户插件开发自己的缓存失效机制。 以此插件为例。 这个想法是在Artifactory处理下载请求之前将资源标记为“过期”,从而使Artifactory将缓存版本替换为上游版本。 像这样的插件通常用于替换非官方支持的repo类型中的元数据文件(例如CRAN),但是您可以使用它来使任何通用文件到期。 此功能作为User Plugins Wiki上的beforeDownloadRequest注释块的一部分进行了记录。 If you are running w ...
  • Android studio缓存了很多文件,包括符号引用和主要的android属性反射。 当你使用view.findViewByid()它内部使用反射来获取id匹配的视图。 有时这个符号链接会损坏并失去连接。 有时这就是为什么有时你会看到R keyword周围的红色。 无效重置并重新链接所有文件,清除已建立的缓存。 Android studio caches a lot of files, including symbolic references and mainly android property r ...

相关文章

更多

最新问答

更多
  • python的访问器方法有哪些
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。
  • 响应navi重叠h1和nav上的h1链接不起作用(Responsive navi overlaps h1 and navi links on h1 isn't working)
  • 在C中读取文件:“r”和“a +”标志的不同行为(Reading a File in C: different behavior for “r” and “a+” flags)
  • NFC提供什么样的带宽?(What Kind of Bandwidth does NFC Provide?)
  • 元素上的盒子阴影行为(box-shadow behaviour on elements)
  • Laravel检查是否存在记录(Laravel Checking If a Record Exists)
  • 设置base64图像的大小javascript - angularjs(set size of a base64 image javascript - angularjs)
  • 想学Linux 运维 深圳有哪个培训机构好一点
  • 为什么有时不需要在lambda中捕获一个常量变量?(Why is a const variable sometimes not required to be captured in a lambda?)
  • 在Framework 3.5中使用服务器标签<%=%>设置Visible属性(Set Visible property with server tag <%= %> in Framework 3.5)
  • AdoNetAppender中的log4net连接类型无效(log4net connection type invalid in AdoNetAppender)
  • 错误:发送后无法设置标题。(Error: Can't set headers after they are sent. authentication system)
  • 等待EC2实例重启(Wait for an EC2 instance to reboot)
  • 如何在红宝石中使用正则表达式?(How to do this in regex in ruby?)
  • 使用鼠标在OpenGL GLUT中绘制多边形(Draw a polygon in OpenGL GLUT with mouse)
  • 江民杀毒软件的KSysnon.sys模块是什么东西?
  • 处理器在传递到add_xpath()或add_value()时调用了什么顺序?(What order are processors called when passed into add_xpath() or add_value()?)
  • sp_updatestats是否导致SQL Server 2005中无法访问表?(Does sp_updatestats cause tables to be inaccessible in SQL Server 2005?)
  • 如何创建一个可以与持续运行的服务交互的CLI,类似于MySQL的shell?(How to create a CLI that can interact with a continuously running service, similar to MySQL's shell?)
  • AESGCM解密失败的MAC(AESGCM decryption failing with MAC)
  • SQL查询,其中字段不包含$ x(SQL Query Where Field DOES NOT Contain $x)
  • PerSession与PerCall(PerSession vs. PerCall)
  • C#:有两个构造函数的对象:如何限制哪些属性设置在一起?(C#: Object having two constructors: how to limit which properties are set together?)
  • 平衡一个精灵(Balancing a sprite)
  • n2cms Asp.net在“文件”菜单上给出错误(文件管理器)(n2cms Asp.net give error on Files menu (File Manager))
  • Zurb Foundation 4 - 嵌套网格对齐问题(Zurb Foundation 4 - Nested grid alignment issues)
  • 湖北京山哪里有修平板计算机的