Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
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: