www.www.zaachi.com »  Blog/Php  »  Hodnota proměnné v metodě

Hodnota proměnné v metodě



Občas narazíte na situaci, kdy potřebujete získat z metody hodnotu proměnné, kterou ale nemůžete vrátit pomocí return, například kvůli dalšímu zpracování kódu.

 

Reklama

Pokud mě chcete podpořit a jste milovník jedné stopy, navštivte můj projekt: MotoArena.cz

S těmito třemi případy jsem se setkal, který je podle vás nejlepší, nebo jaký způsob používáte vy?

1. Reference (WTF?)

class MyClass
{
	/**
	 * Reorder columns from table
	 * @param $columns
	 * @param $affected_columns
	 * @return unknown_type
	 */
	public function ReorderColumns($columns, &$affected_columns)
	{
		/**
		 * my reorder code...
		 */
		$affected_columns = count( $columns );
		/**
		 * next code...
		 */
	}
}

$affected_columns = 0;

$mc = new MyClass();
$mc->ReorderColumns($columns, $affected_columns);

if( $affected_columns == 0 )
{
	/**
	 * my code
	 */
}
  • nutnost definovat další proměnnou před voláním metody!
  • nepřehledý kód!

2. veřejná proměnná

class MyClass
{
	//count of affected columns
	public $affected_columns = 0; 

	/**
	 * Reorder columns from table
	 * @param $columns
	 * @param $affected_columns
	 * @return unknown_type
	 */
	public function ReorderColumns($columns)
	{
		/**
		 * my reorder code...
		 */
		$this->affected_columns = count( $columns );
		/**
		 * next code...
		 */
	}
}

$mc = new MyClass();
$mc->ReorderColumns($columns);

if( $mc->affected_columns == 0 )
{
	/**
	 * my code
	 */
}
  • nepřehledý kód!
  • proměnná musí být veřejná!

3. Get metoda

class MyClass
{
	//count of affected columns
	private $affected_columns = 0; 

	/**
	 * Reorder columns from table
	 * @param $columns
	 * @param $affected_columns
	 * @return unknown_type
	 */
	public function ReorderColumns($columns)
	{
		/**
		 * my reorder code...
		 */
		$this->affected_columns = count( $columns );

		//$this->SetAffectedColumns(count($columns));

		/**
		 * next code...
		 */
	}

	/**
	 * Getter ($affected_columns)
	 * @return int
	 */
	public function GetAffectedColumns()
	{
		return $this->affected_columns;
	}

	/*
	private function SetAffectedColumns($affected_columns)
	{
		$this->affected_columns = $affected_columns;
	}
	*/
}

$mc = new MyClass();
$mc->ReorderColumns($columns);

if( $mc->GetAffectedColumns() == 0 )
{
	/**
	 * my code
	 */
}

Tento posledni příklad by bylo možné samozřejmě doplnit ještě o setovací funkci (zapoznámkovaná SetAffectedColumns), ale to je v tomto případě zbytečné, protože by metoda stejně nemohla být veřejná.

 

 


linkuj topclanky
Komentáře (2)

Autor: Zaachi
Publikováno: 6.11.2009 10:00:32


Mohlo by vás zajímat:
PHP: Výchozí hodnota formulářů
Jednoduchá kontrola proměnných
iPhone - NSUserDefaults - uživatelské proměnné
TOPLIST.cz
rss coments img img img