次のコードはJoomla 1.6で機能しますが、3.xでStrict Standardsエラーをスローします。
厳密な標準:変数のみを参照によって割り当てる必要があります
//Get the full URL for sharing purposes
$uri = & JFactory::getURI();
$absolute_url = $uri->toString();
<?php echo $absolute_url; ?>
Joomla 3.xでエラーなしにコードを機能させるにはどうすればよいですか?
[〜#〜]更新[〜#〜]
主な質問に対する答えは次のとおりです。JFactory:: getUri()は非推奨です。次のようにJUriを直接使用してください。
_<?php
$uri = JUri::getInstance();
echo $uri->toString();
// or simpler:
echo JUri::getInstance();
?>
_
Strict Standardsエラーは、JFactory::getURI();
の前の_&
_が原因です。詳細については、以下をご覧ください。
元の回答
&を削除します
_//Get the full URL for sharing purposes
$uri = JFactory::getURI();
$absolute_url = $uri->toString();
<?php echo $absolute_url; ?>
_
PHP5では、new
演算子は自動的に参照を返すため、「&」は不要になりました。
公式からPHPマニュアル:
PHP 5以降、new演算子は参照を自動的に返すため、new by参照の結果を割り当てると、PHP 5.3以降でE_DEPRECATEDメッセージが返されます。以前のバージョンではE_STRICTメッセージ。
ソース: http://php.net/manual/en/language.operators.assignment.php
Joomlaチュートリアル によると、次の関数で現在のURLを取得できます。
JUri::current();
PDATE:JUri
も廃止されました。正しい方法は次のとおりです。
_$uri = Joomla\CMS\Uri\Uri::getInstance();
echo $uri->toString();
_
現在は非推奨となっている古いメッセージ:
JFactory::getURI();
は非推奨です。現在のURLを取得する正しい方法は次のとおりです。
_$uri = JUri::getInstance();
echo $uri->toString();
_
現在のURLを取得するためにtoString
メソッドを使用することは間違っています。 toString
メソッドはそのためのものではありません。以下は、現在のURLを取得するための、より優れた、よりクリーンで将来性のあるアプローチです。
$objJURI = JFactory::getURI();
$strQuery = '';
if (!empty($objJURI->getQuery()))
$strQuery = '?'.$objJURI->getQuery();
$strFragment = '';
if ((!empty($objJURI->getFragment())) && ($objJURI->getFragment() != '#'))
$strFragment = $objJURI->getFragment();
$currentURL = $objJURI->current().$strQuery.$strFragment;
getFragment
メソッドは番号記号の後ろの部分を返す必要がありますが、それを実行できないようにするコアバグがあるようです。