Jump to content
php.lv forumi

Laravel programmētāji


ViktorsN

Recommended Posts

  • Replies 300
  • Created
  • Last Reply

Top Posters In This Topic

Labi - funkcijas/metodes, kas atgriež NULL objekta vietā, ja kaut kas nav pareizi, bet exception īsti nav jēgas mest. Piemēram, kaut kādi optional dati, kas var būt un var nebūt.

Optional parametri ar default value NULL/FALSE.

Un tās special case funkcijas PHP nebūt nav tikai 0.001% gadījumu, ja vien tu neesi visu PHP API pārrakstījis pa savam.

Link to comment
Share on other sites

Scalā ir tāds skaists tips kā Option[T], kurš implementē divus apakštipus Some[T] un None. Un, ja tev ir iespējamība, ka var atgriezt kādu objektu, bet var arī neatgriezt, tad raksta funkciju:

def getSomeObject: Option[MyObject] = {
  ...
}

Un pēc funkcijas definīcijas ir viennozīmīgi skaidrs, ka funkcija varbūt atgriezīs objektu, bet varbūt None.

 

Attiecīgi tālāk var veikt dekompozīciju un attiecīgi rīkoties abos gadījumos:

getSomeObject match {
  case Some(object) => println(object)
  case None => println("Object not found")
}

Vai, ja objekta neatgriezšanas gadījumā ir kāds defaultais objekts, tad:

println( getSomeObject.getOrElse(defaultObject) )
Edited by codez
Link to comment
Share on other sites

Lietot double equality izņemot dažus ļoti specifiskus gadījumus ir pilnīgs un absolūts cirvisms visplašākajā šī vārda nozīmē.

 

Tas, ka valoda ļauj darboties type free, nenozīmē, ka viss arī ir jāraksta type free. 0 ir integer 0, nevis false, "" ir emptystring, nevis false un null ir null, nevis false. Tā pat, null lietošana ir absolūts ļaunums no kura jāizvairas visos iespējamos gadījumos - null nav ne jāatgriež ne jāpieņem interfeisos, izņemot varbūt darbojoties ar RDBMS kur null ir "nekāda vērtība" un operācija "dzēst lauku" nepastāv. 

Link to comment
Share on other sites

Un tas ir cirvisms, jo? Kurš var pastāstīt, cik reizes viņam dzīvē gadījušās ziepes "==" dēļ, jo nav ticis izmantots "==="? Es precīzi neatceros, bet tiecas uz 0, toties lietošanas ērtuma ieguvums ir pamatīgs.

Link to comment
Share on other sites

Un tas ir cirvisms, jo? Kurš var pastāstīt, cik reizes viņam dzīvē gadījušās ziepes "==" dēļ, jo nav ticis izmantots "==="? Es precīzi neatceros, bet tiecas uz 0, toties lietošanas ērtuma ieguvums ir pamatīgs.

xD Good luck, then.

 

https://www.owasp.org/images/6/6b/PHPMagicTricks-TypeJuggling.pdf

http://securityaffairs.co/wordpress/36732/hacking/php-hash-comparison-flaw.html

https://www.alertlogic.com/blog/writing-exploits-for-exotic-bug-classes-php-type-juggling/

https://labs.mwrinfosecurity.com/blog/wordpress-auth-cookie-forgery/

... and many, MANY many more. 

Link to comment
Share on other sites

Vienkārši, ja tu salīdzini ar ===, tad rezultāts ir daudz paredzamāks, nekā ar ==, un ļoti bieži pat nepārprotams, kā, piemēram, "$x === null".

 

No frontenda tev tāpat nāk stringi, arī skaitļiem. Tad ko, tu katru skaitli salīdzini ar (int)$_POST['id'] === $id ?

 

Vai arī tu noselektē no db datus, un arī vienmēr casto tos uz int pirms salīdzināšanas?

 

Kad tu atlasi ActiveRecord instanci no db, un tur var būt divi varianti rezultātam - objekts vai null, ja neeskistē ieraksts. Tad if`ā tu arī salīdzini if($obj === null) vai tomēr if($obj)? Es ceru, ka === null, jo if($obj) tomēr casto uz boolean, kas basically ir double equals.

 

 

Tieši šādos keisos == ir pats labākais, ka nav jādrukā vienkārši lieki simboli...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...