IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 18. diel - Dátové typy v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Dušan Kovářík:6.7.2021 2:08

Díky za článek. Vždycky mám rád, když někdo vnese trochu světla do toho, co se děje "na pozadí" s datovými typy u dynamicky typovaných jazyků!

 
Odpovedať
6.7.2021 2:08
Avatar
kukivac
Tvůrce
Avatar
Odpovedá na Dušan Kovářík
kukivac:7.7.2021 11:00

Děkuju za hodnocení. Jsem rád že pomohlo.

 
Odpovedať
7.7.2021 11:00
Avatar
Jan Zahradník:7.11.2021 10:01

Díky za článek, jen mi nejsou jasné poslední dva obrázky s class Produkut. Bylo by fajn k nim dát vysvětlení. Takhle mám pocit, že do článku vůbec nepatří. Nevidím tam souvislosti s tématem.
Honza

 
Odpovedať
7.11.2021 10:01
Avatar
Michal D.
Tvůrce
Avatar
Michal D.:19.7.2022 12:43

Ano, tento kód je nevysvětlený. Zkusil jsem zapátrat sám.

class Produkt {
  public int $id;
  public float $cena;
  public array $parametry;
  public boolean $vProdeji;
}

Vytvořil jsem si třídu, kde ta proměnná $retez s deklarovaným datovým typem opravdu funguje (tj. IDE mi nehlásí chybu), tj. funkce vrat vrací její hodnotu. Bohužel jsem v tom nenašel žádnou výhodu. NetBeans určitě nekontroluje, že typ souhlasí.

class trida {

  private string $retezec = "text";

  public function vrat()
  {
      return $this->retezec;
  }
 
Odpovedať
19.7.2022 12:43
Avatar
Michal D.
Tvůrce
Avatar
Odpovedá na Michal D.
Michal D.:19.7.2022 12:55

aha, je to fajn, IDE to hlídá:

<?php
declare(strict_types=1);
class trida {

  private string $retezec = "text";

  public function vrat()
  {
      return $this->retezec;
  }

stačí tam dát toto:

declare(strict_types=1);

a pokud přidáš chybný návratový datový typ (int namísto string), IDE hlásí chybu:

public function vrat() : int
 {
     return $this->retez;
 }

chyba: Fatal error: Uncaught TypeError: newPHPClass::vrat(): Return value must be of type int, string returned in ...

Fajn, alespoň jsem se něco naučil :)

 
Odpovedať
19.7.2022 12:55
Avatar
Michal D.
Tvůrce
Avatar
Odpovedá na Jan Zahradník
Michal D.:19.7.2022 12:58

Ve třídě lze v PHP deklarovat datové typy třídním proměnným. Také je můžeš deklarovat pro parametry funkcí a pro návratový datový typ funkcí. Taky mě to zajímalo, jak je to v péhápku po novu s datovými typy. Teď už to vím :)

 
Odpovedať
19.7.2022 12:58
Avatar
kukivac
Tvůrce
Avatar
Odpovedá na Michal D.
kukivac:19.7.2022 13:04

Ahoj Michale, výhoda v deklarovaném datovém typu je v případech kdy aplikaci nevyužíváš ty, ale naopak někdo u koho nemůžeš očekávát že bude zadávat správné datové typy, tedy například při příjimání dat z formuláře.

 
Odpovedať
19.7.2022 13:04
Avatar
Michal D.
Tvůrce
Avatar
Michal D.:19.7.2022 13:22

ahoj
jo, já datovým typům rozumím, přišel jsem z VBA (tam si můžeš vybrat mezi dynamickým a statickým typováním) a ze silně staticky typované Javy.
Ve formuláři (a na serveru) si to ale ošetříš jinak, ne? (parsováním textu)

nevíš prosím, jak aplikovat declare(stric­t_types=1); i v index.php, tj. na stránce html?

<!DOCTYPE html>
<html>
</html>

Každopádně díky za Tvůj článek!

 
Odpovedať
19.7.2022 13:22
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!