Q:

Difference between protected $_mdl and protected $mdl

I have seen that people use underscore before the variable even if they use the keyword protected e.g.
class Administration extends Backend_Controller {

    protected $_mdl = 'model_comments';

    function __construct()
    {
         parent::__construct();
         $mdl = $this->_mdl;
         $this->load->model($mdl);
    }

    ...

}

Is the underscore needed if I use protected before the variable?
What is the benefit of using underscore before mdl like: $_mdl instead of just $mdl?
I am not very good in this "security" issues, so any explanation is appreciated.

A:

This is a naming convention.  It is used to show the scope of the property.  Whether it is protected or public.  By seeing the underscore you know how you can access the class property.
Kind of, (but not really), like how the __ is used with magic methods such as the constructor method.
PHP does not care if you follow this convention or not.  It has no impact on how the code is interpreted.  
In other languages you'll even see things like Hungarian Notation.
Finally, no real security implication.  It is all about readability of your code.

A:

it the same difference as between $a and $abc

A:

The underscore is not needed, it was used mostly in php4 (since there were no visibility functionality other than public) to visually show that the variable was a private variable in the class.
Here is the php manual on visibility 
http://us.php.net/manual/en/language.oop5.visibility.php

