2014-09-24 3 views
0

Мне известны все отличные отладочные системы, такие как Zend или xdebug, но я просто хочу простой режим отладки error_log("Something");.Сфера с переменной отладки в PHP

У меня есть класс, как это:

class myClass { 

    $DEBUG_MODE = True; 

    public function someFunction(){ 

     if($DEBUG_MODE) 
     { 
      error_log($varName); // outputs to my Apache server's error log file. 
     } 
    } 
} 

Однако я получаю ошибку ниже:

Undefined variable: DEBUG_MODE in path in line: integer

Я, вероятно, перепутав мой Java и PHP ... Может кто-нибудь дать мне какое-то понимание или, возможно, лучший способ отладки?

ответ

1

Вы должны получить доступ к свойствам класса как-то (либо статически, либо объектом). Мой ответ показывает, как сделать это статически (так что каждый объект myClass может использовать то же значение):

<?php 

class myClass { 

    // make it static so you don't have to set it in every instance of myClass 
    protected static $DEBUG_MODE = True; 

    public function someFunction(){ 

     if(self::$DEBUG_MODE) // reference the static variable from this class 
     { 
      error_log($varName); // outputs to my Apache server's error log file. 
     } 
    } 
} 
+0

БЛАГОДАРЯ Kleskowy, что это именно то, что мне нужно. Считаете ли вы, что лучше сделать if-statement в функцию, поэтому мне не нужно повторять кучу if-statement? – theGreenCabbage

+1

Это вариант и хороший способ, я думаю, потому что это сделает ваш код более гибким и более легким для переопределения (т. Е. В иерархии классов). Но помните, что если вы назовете это 1 миллион раз, гораздо лучше использовать 1 миллион, если операторы, чем 1 миллионные вызовы функций. – Kleskowy

+0

Я определил функцию прямо над моими другими функциями, называя ее 'debugMode ($ string)' (внутри этой функции 'error_log ($ string)'). Используя его в моих функциях, я получаю вызов Call for undefined debugMode() '. Почему, хотя я определил функцию, я не могу ее использовать? – theGreenCabbage

0

Чтобы получить доступ к свойствам класса (и методы), вы должны использовать $this->

if ($this->DEBUG_MODE) 

Обратите внимание, что нет $ за DEBUG_MODE

2

попробовать так:

class myClass { 

    private $DEBUG_MODE = True; 

    public function someFunction(){ 

     if($this->DEBUG_MODE) 
     { 
      error_log($varName); // outputs to my Apache server's error log file. 
     } 
    } 
} 

и для входа вы можете использовать Apache log4php

, если вы хотите отлаживать ваш php-код inline! просто использовать PHP vardump функция

это очень хороший инструмент для отладки и получить значение переменной

var_dump($varName); 
Смежные вопросы