2012-03-02 3 views
0

По какой-то причине мой вызов функции PHP <? r(); ?> возвращает фатальную ошибку. Любая помощь?Функциональный вызов функции PHP Fatal Error

<?php 
//$r is previously assigned 
function r() { 
    echo ($r); 
}; 
?> 

<html> 
    <head> 
     <link type="text/css" rel="stylesheet" href="<? r(); ?>rs/css/master.css"> 
    </head> 
+2

Публикации сообщение об ошибке может быть полезным – Phil

+1

Если что-то не превращая E_NOTICE в Exception, что вы имеете описать недостаточно для генерации фатальной ошибки. Пожалуйста, разместите дополнительную информацию об ошибке, которую вы испытываете. – cmbuckley

ответ

1

Если вы хотите сослаться на глобальный объект внутри объекта, вы должны явно объявить его как global:

function r() { 
    global $r; 
    echo ($r); 
} 

Но в целом, ссылаясь на глобальные переменные таким образом, является плохой style. Вы должны рассмотреть вопрос о принятии в предпосылках в качестве аргументов функции:

function r($r) { 
    echo ($r); 
} 

... 

r($r); 
+2

Я хочу поддержать вас, но вы знаете, 'global' – Phil

+0

Плохой стиль по-прежнему выполняет свою работу и сохраняет код коротким. реквизит –

4

Определение функции изменения объема, где $r не будет внутри этой функции. Попробуйте отправить в $r с функцией таким образом:

<?php 
function r($r) { 
    echo ($r); 
} 
?> 
<link type="text/css" rel="stylesheet" href="<?php r($r); ?>rs/css/master.css"> 

или определения global $r; в начале функции (не предпочтительно).

Кроме того, вы не должны использовать <?, чтобы открыть PHP. Если все функции делают это эхо значения $r, было бы больше смысла, чтобы просто сделать это:

<link type="text/css" rel="stylesheet" href="<?php echo ($r); ?>rs/css/master.css"> 
+0

Согласовано ... кроме определения $ r как глобального. ;-) – Nilpo

+0

@Nilpo: Мне не нравится использовать глобальную переменную для простой переменной, поэтому я позже упоминал ее как побочную заметку. Я использовал свои силы ниндзя, чтобы использовать мой льготный период и уменьшить его. ;) – animuson

+0

Право на. Я определенно согласен с тобой. Использование глобальных переменных почти всегда является плохой практикой. Переменные должны быть явно переданы между областями. Меньше ошибок, более простой код, который легче отслеживать, и т. Д. Я не буду говорить окончательно, что у них их нет, но я могу только подумать об одном времени, которое я бы потворствовал использованию глобальных переменных - при определении глобально доступных констант. Но даже тогда я лично прибегаю к другим средствам. – Nilpo

Смежные вопросы