Jump to content
php.lv forumi
Sign in to follow this  
_PUIKA_

Problēma ar funkcijas argumentiem

Recommended Posts

Labdien.

Man te sekojoša problēma:

Izveidoju funkciju query() .. iekš šīs funkcijas ir 4 argumenti (t.i. $nosaukums, $query, $tips, $vertiba).

Kā redzat man ir argumenti, kurus pie dažiem tipiem reāli nevajag izmantot, jo funkcijas kods ir sekojošs:



function query( $name, $query, $type = NULL, $value ){
		$this->query	=	mysql_query($query);
		if( $this->name = 'array' ){
			while( $this->$result = mysql_fetch_array($this->query, $this->type) ){
				return $this->$result[$this->$value];
			}
		}elseif( $this->name = 'assoc' ){
			while( $this->$result = mysql_fetch_assoc($this->query) ){
				return $this->$result[$this->value];
			}
		}elseif( $this->name = 'object' ){
			while( $this->result = mysql_fetch_object($this->query) ){
				return $this->result->$this->value;
			}
		}elseif( $this->name = 'row' ){
			$this->result = mysql_fetch_row($this->query);
			return $this->result[$this->value];
		}else{
			return FALSE;
		}
	}

 

 

Tātad problēma.. kā es varu izsaukt funkciju no klases, ja $name($nosaukums) ir 'row', un funkcija vēl pieprasa ievadīt tikai $query un $value argumentus, nevis visus 4 iekļaujot $type??

Liels paldies jau iepriekš.

Edited by _PUIKA_

Share this post


Link to post
Share on other sites

O, šitais ir viens no top WORST practices, kad neobligātus parametrus liek PIRMS obligātajiem.

 

 

Pilnīgi stulbi:

function query( $name, $query, $type = NULL, $value ){

Ir ok:

function query( $name, $query, $value, $type = NULL){

Share this post


Link to post
Share on other sites

O, šitais ir viens no top WORST practices, kad neobligātus parametrus liek PIRMS obligātajiem.

 

 

Pilnīgi stulbi:

function query( $name, $query, $type = NULL, $value ){

Ir ok:

function query( $name, $query, $value, $type = NULL){

 

Tatād sanāk, ka tam ir nozīme, kur es viņu lieku. Ok. Bet kāds ir atrisinājums, lai vienmēr nebūtu oblīgāti jādefinē $type, bet kad ir izsaukts tips, kuram obligāti viņu, vajag, funkcija pieprasa $type ievadi?

Share this post


Link to post
Share on other sites

Tatād sanāk, ka tam ir nozīme, kur es viņu lieku. Ok. Bet kāds ir atrisinājums, lai vienmēr nebūtu oblīgāti jādefinē $type, bet kad ir izsaukts tips, kuram obligāti viņu, vajag, funkcija pieprasa $type ievadi?

 

Nu to tu vari pats pārbaudīt funkcijā.

 

Teiksim,

 

function foo($a, $b = NULL){
 if($a == 1 && $b === NULL){
   throw new Exception("Ja $a ir 1, tad $b ir obligāti jānorāda!");
 }
 //Kods tālāk, ja viss ir ok
}

Share this post


Link to post
Share on other sites

Kā var nebūt nozīme?

 

x( a, b, c )

 

...un...

 

x ( b, c, a )

 

Sanāks pilnīgi "unexpected" rezultāts!

Share this post


Link to post
Share on other sites

Kā var nebūt nozīme?

 

x( a, b, c )

 

...un...

 

x ( b, c, a )

 

Sanāks pilnīgi "unexpected" rezultāts!

 

Nē, bija bazars par to, ka ir stulbi darīt šitā:

function x($a="blabla", $b, $c = 123){}

Share this post


Link to post
Share on other sites

teorētiski var izmantot arī func_get_args(), tad padod kādus parametrus gribi, bet nu labāk jau būtu, ja tev tā funkcija ir kaut kādā klasē, tad izveido vairākas funkcijas ar konkrētiem parametriem un tad no tām funkcijām tiek izsaukta galvenā funkcija ar visiem parametriem.

 

iespējams neskaidri izteicos, bet es arī īpaši necentos :)

Share this post


Link to post
Share on other sites

Tiešām liels paldies.

Muļķīgs ir peiņēmums, par tukšu argumentu.. t.i. ka viņam var skriet pāri un pieprasīt nākošo. Atrisinājums.. visu neobligāto likt beigās!

Starpcitu.. nu pat jau sāku domāt, ka te derētu izveidot cepumu sistēmu.. tieši tiem, kas tādiem kā man ir izpalīdzējuši saprast koda būtību. :)

Vēlreiz paldies! Problem solved!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...