Правилно ли е написан този клас?

vik96

Registered
Здравейте.Понеже досега не ми се е налагало да пиша класове (ползвам няколко готови) и се чудех дали класът който написах е правилен?
Код:
<?
class userLogs
{
	var $file = '';
	var $errorfile = '';

	function setInfo()
	{
		$this->ip = $_SERVER['REMOTE_ADDR'];
		$this->page = $_SERVER['PHP_SELF'];
		$this->getq = $_GET;
		$this->referer = $_SERVER['HTTP_REFERER'];
		
		$this->old = @file_get_contents($this->file);
		
		$this->getinfo = '';
		foreach ( $this->getq as $flag=>$part )
		{
		$this->getinfo .= " <b>$flag</b>:$part , ";
		}
		
		$this->newinfo = "$this->old <br /> =========================================== <br /> <b>IP</b>: $this->ip <br /><b>Page</b>: $this->page <br /> <b>Referer</b>: $this->referer  <br /><b>GET Query</b>:   $this->getinfo ";
		file_put_contents($this->file,$this->newinfo);
		//echo $this->newinfo;
	}
	
	
	function errorLog($error)
	{
	$this->ip = $_SERVER['REMOTE_ADDR'];
		$this->old = @file_get_contents($this->errorfile);
		$this->info = "$this->old <br /> =========================================== <br /> MySQL Error: $error <br /> IP: $this->ip";
		file_put_contents($this->errorfile,$this->info);
	}
	
	
	function setFile($file = 'log.html',$errorlog = 'error.html')
	{
		$this->file = $file;
		$this->errorfile = $errorlog;
	}
	
}

?>
 
На първи поглед - нямаш модификатори public/private ==> липсва енкапсулация.
Сложи някакви default values на полетата в класа.
Нямаш конструктор, който например да вика setFile();
Код:
$this->ip = $_SERVER['REMOTE_ADDR']; 
      $this->page = $_SERVER['PHP_SELF']; 
      $this->getq = $_GET; 
      $this->referer = $_SERVER['HTTP_REFERER']; 
       
      $this->old = @file_get_contents($this->file);
А къде са ти тези полета в класа, че да ги викаш с this ?
 
Като начало този клас май е писан на PHP4. Използваш ключова дума var Слагай public модификатори на методите, които не са private или protected.
 
Rado каза:
На първи поглед - нямаш модификатори public/private ==> липсва енкапсулация.
Сложи някакви default values на полетата в класа.
Нямаш конструктор, който например да вика setFile();
Код:
$this->ip = $_SERVER['REMOTE_ADDR']; 
      $this->page = $_SERVER['PHP_SELF']; 
      $this->getq = $_GET; 
      $this->referer = $_SERVER['HTTP_REFERER']; 
       
      $this->old = @file_get_contents($this->file);
А къде са ти тези полета в класа, че да ги викаш с this ?
Може ли тогава да ми редактираш класа ,че да стане правилно ? Сега работи ,но искам да се науча да пиша правилно класове :)
 

Back
Горе