Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 15 - Datové typy v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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ů!

 
Odpovědět
6.7.2021 2:08
Avatar
kukivac
Tvůrce
Avatar
Odpovídá na Dušan Kovářík
kukivac:7.7.2021 11:00

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

 
Odpovědět
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

 
Odpovědět
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;
  }
 
Odpovědět
19.7.2022 12:43
Avatar
Michal D.
Tvůrce
Avatar
Odpovídá 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 :)

 
Odpovědět
19.7.2022 12:55
Avatar
Michal D.
Tvůrce
Avatar
Odpovídá 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 :)

 
Odpovědět
19.7.2022 12:58
Avatar
kukivac
Tvůrce
Avatar
Odpovídá 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.

 
Odpovědět
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!

 
Odpovědět
19.7.2022 13:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.