我对Joomla很陌生!(以及一般的PHP ),并试图通过在本地Joomla!-Installation上开发一个网站来学习。我在PHP 5.5.12、Apache2.4.9和Joomla3.6.4中使用WAMP-Server。
现在,我喜欢从$_POST和$_GET检索数据。两者都同样不安全,因此只有在一起检索和处理它们才是合乎逻辑的。
根据本文strings,我应该能够这样做:
$string = JFactory::getApplication()->input->method->getString( 'myText', '' );它不起作用,抱怨'method'是一个非对象。(“致命错误:调用非对象上的成员函数getString()”)
来自同一列表的所有其他数据源(例如'get'、'post'、'cookie'、'request'等)不要产生任何错误,而且看起来是完美无缺的。
不幸的是,我需要从$_POST或$_GET (或者两者都检索,但没有$_COOKIE)检索数据,这正是数据源='method'应该做的事情。
当然,我可以顺序地使用'post'和'get',但如果有一个选项可以直接使用(减少开销),这对我来说是愚蠢的。和更小的代码)。也许我得先解决这个问题,但我们暂时不谈这个了。
在JInput,唯一提到的Super s是'get'、'post'和'server'。默认情况下,没有任何关于其他明显存在的源(没有错误发生)或命名源的任何信息。
我的搜索已经进行了一段时间了,我找不到更多的相关信息(目标是Joomla!或而不是PHP)。如果我错过了一些最基本的东西,请告诉我。
说到这一点,我的问题现在是:
是否有任何设置(或更新)使'method'**-data-source 工作?**
是否有另一个值(!=**'method'**)表示 JInput 中的数据源,可用于直接从 $_POST 或 $_GET 检索数据,或者是否需要顺序调用 'post' 和E 253 'get' E 157来完成此E 258(可能是d59由于名称上的冲突而重命名)e 160E 261
谢谢你花时间阅读(也许还能回答)。
发布于 2016-11-15 14:03:50
我终于想出了办法,把它推到@Xorifelse,让它朝着正确的方向前进。
我的问题的答案是:
1)我是否需要设置(或更新)才能使“方法”正常工作?
必须以如下方式将名为'_METHOD'的数组添加到$GLOBALS-array中:
$GLOBALS['_METHOD'] = array_merge($_GET,$_POST);然后,用data='method'调用'method'将返回$_GET和$_POST的合并内容,如果它们具有相同的键,则在$_GET中使用$_POST覆盖值。
2)对于'method'中的数据源,是否有另一个可用于.的值(!= JInput )?
$GLOBALS-array中的每个现有数组(其名称以下划线('_')字符开头,仅由大写字符组成)可以通过使用数据源调用JInput来使用该数组的名称(没有前面的下划线)。
如果在JInput调用之前创建和/或填充了该数组,则无关紧要。因此,在第一个问题中使用像_GETANDPOST这样的名称而不是_METHOD可以更好地描述它的目的。
但是.
玩弄$GLOBALS通常被认为是的坏做法!!
对于每个人来说,想知道JInput中的数据源的这些值是如何工作的,为什么它们看起来可以像一个方法一样被调用,即使它们不是方法:
答案是在‘魔术方法’和‘属性重载’中找到的。
https://secure.php.net/manual/en/language.oop5.magic.php
https://secure.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members
https://stackoverflow.com/questions/40592796
复制相似问题