V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."
Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.
Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.
Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.
… více »Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.
Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.
ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím
… více »ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.
Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.
Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).
function __autoload($class_name)
{
include_once(ABS_PATH.'/class1/'.$class_name.'.php');
}
Řešení dotazu:
Toto by malo fungovat :)
function __autoload($class_name)
{
if (file_exists(ABS_PATH . '/class1/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/class1/' . $class_name . '.php');
}
elseif (file_exists(ABS_PATH . '/class2/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/class2/' . $class_name . '.php');
}
elseif (file_exists(ABS_PATH . '/pages/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/pages/' . $class_name . '.php');
}
elseif (file_exists(ABS_PATH . '/system/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/system/' . $class_name . '.php');
}
else
{
echo "Called class doesn't exists!";
exit;
}
}
function __autoload($class_name)
{
if (file_exists(ABS_PATH . '/class1/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/class1/' . $class_name . '.php');
return;
}
elseif (file_exists(ABS_PATH . '/class2/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/class2/' . $class_name . '.php');
return;
}
elseif (file_exists(ABS_PATH . '/pages/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/pages/' . $class_name . '.php');
return;
}
elseif (file_exists(ABS_PATH . '/system/' . $class_name . '.php'))
{
require_once(ABS_PATH . '/system/' . $class_name . '.php');
return;
}
else
{
echo "Called class doesn't exists!";
exit;
}
}
V tom prikladu od bossqone prece ale taky uz dal nic nehleda pokud najde..To nemáš pravdu ;)
return; v podmínce?
return tam může být a není špatný, jen uváděný důvod je zcela špatně.
__autoload()…
ale myslel jsem to tak, že v tomto případě je tam return zcela k ničemu, fce __autoload() stejně v tomto případě pojede až do konce a to bez ohledu jestli načte nebo nenačte existující files
…stejně v tomto případě pojede až do konce a to bez ohledu jestli načte nebo nenačte existující filesProč?![]()
Tedy jedeš…, nezavolá (jestli tedy nebudeme debatovat o termínu „zavolá“).
Tedy jedeš…, nezavolá (jestli tedy nebudeme debatovat o termínu „zavolá“).OK, tak ještě jednou ;) V uvedeném kódu se vždy spustí jazykový konstrukt echo. A neříkej, že nee :)
if/else/elseif.echo se spusti jen v pripade, ze to tu tridu nenajde.. Jakmile ji najde, tak to do zadne dalsi else/if vetve nepoleze..
function __autoload($class_name) {
include_once(strtr($class_name, "_\\", "//") . '.php');
}
Poradí si i s namespace.
$objekt = new class1_Trida(); $objekt = new pages_Trida();nebo pokud používáš namespace
$objekt = new class1\Trida(); $objekt = new pages\Trida();Doporučuji ty adresáře přejmenovat tak, aby ty názvy dávaly smysl.
namespace a to druhé sice smysl to dává jasný, nicméně je to humus daný zápisem namespace v PHP (je to chce myslet u use ... as ..., jinak se nechťa člověk dostane kam nechtěl).
use ... as ... funguje spíš jako definice makra, takže toho bych se nebál.
__autoload() a use ... as ... jsou „nejisté“ každá svým způsobem a jejich kombinace na to nemá vliv.
mám soubor index.php a v něm mám
<?php
function __autoload($class_name) {
include_once(strtr($class_name, "_\\", "//") . '.php');
}
$seznam = new class_Seznam();
?>
pak mám soubor /class/Seznam.php a v něm mám
<?php
class Seznam{
public function __construct(){
...
}
}
?>>
ale dostanu: Fatal Error - Class 'class_Seznam' not found. CO dělám špatně? Díky
Jak ti napsal Kit:
soubor:class1/Trida.php obsahuje třídu class class1_Trida{…
$objekt = new class1_Trida();
nebo pokud používáš namespace
soubor:class1/Trida.php obsahuje definici namespace class1; a (v něm) třídu class Trida{…;
$objekt = new class1\Trida();PS: úmyslně se vyhnul slovu/adresáři
class, bo to je klíčové slovo.
<?php
#Soubor: /var/www/class/Trida.php
namespace class/Trida{
class Trida{}
}
#Soubor: /var/www/index.php
function __autoload($class_name){
include_once(strtr($class_name, "_\\", "//") . '.php');
}
$obj = new class\Trida();
?>
<?php
namespace class1;
class Trida{
public function __construct(){
echo 'An instance of Trida created';
}
};
Soubor: /var/www/index.php
<?php
function __autoload($class_name){
include_once(strtr($class_name, "_\\", "//") . '.php');
}
$obj = new class1\Trida();
A teď se já vyhýbám použití class jako název namespace či adresáře - doporučuji to samé!
namespace = jmenný prostor.
Třídu MojeTrida můžeš mít jednu stejného jména v namespace nmsp1 a druhou v nmsp2.
Dle mého rozumná praktika je, že každý jmenný prostor je de-facto i adresář (PHP toto nijak nevynucuje, jsou to dvě nesouvisející věci).
Jakmile přidáte namespace, tak plný identifikátor třídy je včetně jména namespace.
Zápis s lomítkem j sice úděsný, ale PHP vlastní, k namespace tak trochu patří i use kde spolu s tímto typem __autoload vidím určitou nejistotou pokud by se použilo včetně as.
namespace class1; začíná jmenný prostor class1.
function __autoload($class_name)
{
$array = array('class1', 'class2', 'pages', 'pages2/pages3', 'pages2/pages3/pages4');
foreach($array as $dir)
{
$file = ABS_PATH.'/system/'.$dir.'/'.$class_name.'.php';
if(file_exists($file))
{
include_once($file);
return;
}
}
}
a class pak volal
$obj = new Trida();Název souboru je pak zcela shodný s názvem volané class ;) Tady jsem použil return, jelikož tady opravdu plní to co má, pokud najde požadovanou class, ukončí cyklus a dál již v cyklu nepokračuje ;) Tak, že můžeš ušetřit spoustu času 0.000000005 sec.


Dle mého…, Kit-ove řešení je mnohem elegantnější umožňuje mít stejné třídy v různých adresářích a jmenných prostorech.
PS: V duchu diskuze výše: Podmínky jsou určitě rychlejší než cyklus.
Já neřel ani půl slova, že Kit-ovo řešení je špatné, jinak ano, pokud máš na webu 5 adresářů ve kterých máš uloženy class a navíc mají stejný název, je mé řešení nevyhovující, ale ruku na srdce, dělá to snad někdo?Dle mého…, Kit-ove řešení je mnohem elegantnější umožňuje mít stejné třídy v různých adresářích a jmenných prostorech.
Tak to bezpochyb souhlasím... před pár lety to mělo nějaký význam (vliv na výkon železa).. dneska je to "šumák", "buřt" jak chceš ;)PS: V duchu diskuze výše: Podmínky jsou určitě rychlejší než cyklus.
Já neřel ani půl slova, že Kit-ovo řešení je špatnéJen jsem měl potřebu vyjádřit své preference…
pokud máš na webu 5 adresářů ve kterých máš uloženy class a navíc mají stejný název, je mé řešení nevyhovující, ale ruku na srdce, dělá to snad někdo
Pokud se používají namespace, tak si myslím, že je to normální (,i když ne třeba častá,) programátorská praktika a i pokud se nepoužívají, tak v tom nevidím nijak špatný postup.
„PS:“ se vztahuje k:
„Tady jsem použil return, jelikož tady opravdu plní to co má, pokud najde požadovanou class, ukončí cyklus a dál již v cyklu nepokračuje ;) Tak, že můžeš ušetřit spoustu času 0.000000005 sec.“
return v obou případech plní stejnou funkci, v tvém kódu je de-facto nutný (jinak by kód nestál za moc :) ), v kódu (od Dědek), zabezpečí, že se fce po patřičném include vždy ukončí, tedy je to obraný mechanismus před nesprávným rozšiřováním dané fce.
Takže jak píšeš, ano ušetří čas, ale jen oproti zapomenutému return v cyklu v tvém kódu, ale ne oproti kódu od Dědek či bossqone . Proto jsem to napsal.
namespace system;
class Gen {
public function __construct($site) {
new adddir\Prints();
}
}
new system\Gen();
include s absolutní cestou odpichnutou od cesty souboru, ve kterém se definuje konstanta APP_ROOT_DIR.
define( 'APP_ROOT_DIR', dirname(__FILE__) );
function __autoload($class_name) {
include_once(APP_ROOT_DIR.'/'.strtr($class_name, "_\\", "//") . '.php');
}
Tiskni
Sdílej: