curl up 2026, tj. setkání vývojářů a uživatelů curlu, proběhne opět v Praze. O víkendu 23. a 24. května v Pracovně.
Aplikace pro ověřování věku uživatelů on-line platforem je technicky hotová a brzy bude k dispozici pro občany EU, oznámila dnes předsedkyně Evropské komise Ursula von der Leyenová. Půjde podle ní o bezplatné a snadno použitelné řešení, které pomůže chránit děti před škodlivým a nelegálním obsahem. Aplikace bude podle ní fungovat na jakémkoli zařízení a bude zcela anonymní.
V prosinci 2012 byla z linuxového jádra odstraněna podpora procesorů 386. Včera započalo odstraňování podpory procesorů 486.
IuRe (Iuridicum Remedium) vyhlásila Ceny Velkého bratra za rok 2025. Slídily roku jsou automobilka Volkswagen, Meta a česká Ministerstva vnitra a průmyslu a obchodu. Autorem Výroku Velkého bratra je dánský ministr spravedlnosti zpochybňující právo na šifrovanou komunikaci. Naopak Pozitivní cenu získali studenti Masarykovy univerzity za odpor proti nucení do používaní aplikace ISIC.
Po osmi měsících vývoje byla vydána nová verze 0.16.0 programovacího jazyka Zig (Codeberg, Wikipedie). Přispělo 244 vývojářů. Přehled novinek v poznámkách k vydání.
Nejnovější X.Org X server 21.1.22 a Xwayland 24.1.10 řeší 5 bezpečnostních chyb: CVE-2026-33999, CVE-2026-34000, CVE-2026-34001, CVE-2026-34002 a CVE-2026-34003.
Po roce vývoje od vydání verze 1.28.0 byla vydána nová stabilní verze 1.30.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.30.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2026-04-13. Přehled novinek poznámkách k vydání. Nově ve výchozím nastavení příkaz sudo vyžaduje heslo.
Společnost Blackmagic Design oznámila vydání verze 21 svého proprietárního softwaru pro editování videí a korekci barev DaVinci Resolve běžícího také na Linuxu. Z novinek je nutno vypíchnout možnost editování fotografií. Základní verze DaVinci Resolve je k dispozici zdarma. Plnou verzi DaVinci Resolve Studio lze koupit za 295 dolarů.
Multipatformní renderovací jádro webového prohlížeče Servo je na crates.io. S vydáním verze 0.1.0 (LTS).
data abstraction, which in the object-oriented programming world sometimes is called information hiding or encapsulation. This is a feature in which the type system hides internals of objects, enforcing an abstraction barrier between the implementer and the clients of the class. This abstraction barrier helps keep different parts of the system loosely coupled so they can be updated and maintained without close coordination. Data abstraction is offered in its purest form by existential types. The idea is that we can hide part of a type τ and replace it with a type variable α. We write ∃α.τ to represent this type, where α may be mentioned inside τ. But because this type does not say what α is, no code receiving a value of this type can make use of knowledge of the hidden part of this type.
inline), není důvod si v tom dělat bordel (např. Qt v C++, kde setter je navíc i slotem pro signály). PHP nabízí __get a __set a volání nevyoptimalizuje, takže tam je lepší public proměnná a trocha magie, pokud je třeba. C# zas má nativní podporu pro properties, takže tam gettery a settery vůbec nemají co dělat. No a v Javě je kopec bordelu i tak, takže tam se to ztratí, ať se použije cokoliv
Pokud getter jen předává hodnotu atributu a setter ho pouze nastavuje, je to špatně. Prostě se jimi plýtvá, ve většině případů je jejich použití zbytečné.Sám říkáš totéž. Nic jiného než getter/setter a public proměnná není.
$obj->setDatum($datum), tak odkrývám, že se uvnitř nachází atribut Datum. Porušuji zapouzdření a dělám tedy totéž, jako kdybych napsal $obj->datum = $datum. Druhý zápis je přehlednější.
Podobně místo $datum = $obj->getDatum() je vhodnější použít $datum = $obj->datum. Výraz $obj->datum na rozdíl od toho předchozího můžeš expandovat i ve stringu nebo v Heredoc.
Vnitřek může být skryt za metodami __get() a __set().
Abych předešel dalším dohadům: Používám postup popsaný v prvním odstavci. Názvy mých metod nijak nesouvisí s názvy atributů uvnitř mých objektů.
$obj->setDate($date)tak jsi na omylu. Je to úplně stejně špatně. Co znamená "predepsanou" cestou? To bych mohl klidně napsat
$obj->date = $date a označit ten zápis jako předepsanou cestu.
$obj->setDate($date);nebo
$obj->date = $date;Obojí je špatně. Ke druhému zápisu sice máme poskytnuté rozhraní, ale používá se obvykle jen u objektů třídy
stdClass.
setA a setB?
$obj->date = $date; neni uziti rozhrani ale primy pristup k vlastnosti objektuPublic property je součást rozhranní a nijak to nekoliduje se zapouzdřením.
$obj->setDate($date);také není zapouzdření, o kterém je tu řeč.
$obj->setDate($date); $obj->date = $date;se liší pouze syntaxí, sémanticky jsou shodné. Proč bych měl v PHP dávat přednost prvnímu zápisu, když např. v C# je preferován ten druhý? A proč bych měl používat některý z nich, když ani jeden nepotřebuji?
$obj->date = $date;
__set() nemůžeš přistupovat k čemukoli. Zkus si tohle:
class Setter {
private $date;
private function setDate($date) {
$this->date = $date;
}
function __set($key, $value) {
$method = "set" . ucfirst($key);
$this->$method($value);
}
}
$obj = new Setter();
$obj->date = new DateTime();
Má to všechny vlastnosti, které jsi požadoval. Není tam žádný if ani switch, atribut $date je privátní. Od tvého řešení se liší pouze syntaxí volání.
Přiznám se však, že v této podobě bych to asi nepoužil, protože gettery, settery ani veřejné atributy obvykle nemám důvod používat.
Takze abych to shrnul: Udělat zapouzdření přes setDate() nic nevylepšuje ani neusnadňuje, naopak to jen znepřehlední kód.
Settery i __set() používat umím. Jen je považuji ve většině případů za zbytečné. Prostě se jimi v aplikacích neskutečně plýtvá. Často se kvůli pitomým getterům a setterům porušuje Déméteřin zákon.
Téma se jmenuje "Zapouzdření php kódu". Gettery a settery zapouzření porušují úplně stejně jako veřejné atributy.
takze vam jde vlastne jen o konveci pojmenovani, proto radeji rikam rozhrani a nemusi se pak vest zadna debata - a kazdy at si pojmenovava, jak mu je libo, jak se dohodnou v projektu
mail($to, $subject, $message);není třída, ale funkce pro odesílání mailů se třemi (i více) parametry.
$message může být objektem, ve kterém bude multipart zpráva s vloženými obrázky.
Více adres můžeš předat jako seznam, nebo ten setter bude adder – můžeš mít obojí, záleží na kontextu.
mail(to:$to, subject:$subject, message:$message);?
$config = array(
'dsn' => "mysql:host=localhost;dbname=test",
'user' => "username",
'pass' => "1234",
);
$db = new MyPDO($config);
BTW: V reálu to mám trochu odlišně, tohle je zjednodušené kvůli snazšímu pochopení.
V reálu to mám trochu odlišně, tohle je zjednodušené kvůli snazšímu pochopení.Heslo je jiné?
Tiskni
Sdílej: