Sono un po 'confuso su come funzionano i costruttori in PHP.Costruttori PHP e funzioni statiche
Ho una classe con un costruttore che viene chiamato quando istanzio un nuovo oggetto.
$foo = new Foo($args);
__construct($params)
è chiamato nella classe Foo
ed esegue il codice di inizializzazione appropriato.
Tuttavia, quando uso la classe per chiamare una funzione statica, il costruttore viene chiamato di nuovo.
$bar = Foo::some_function(); //runs the constructor from Foo
Questo fa sì che il costruttore per eseguire, eseguire il codice oggetto di inizializzazione che intendevo solo quando si crea un nuovo oggetto Foo
.
Mi manca il punto su come funzionano i costruttori? O esiste un modo per impedire l'esecuzione di __construct()
quando uso la classe per effettuare chiamate di funzioni statiche?
Devo utilizzare una funzione "fabbrica" per eseguire l'inizializzazione dell'oggetto? Se è così, qual è il punto del costruttore, allora?
:: MODIFICA :: Ho un modulo in cui gli utenti possono caricare le foto su un album (create_photo.php) e un'area in cui possono visualizzare l'album (view_photos.php). Al modulo inviare:
$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..);
Il costruttore di foto crea e salva la foto. Tuttavia in view_photo.php, quando chiamo:
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
Ciò sta causando il costruttore di foto da eseguire!
Questo non può essere giusto. Si prega di fornire il codice completo in cui il costruttore viene chiamato da una chiamata statica! – mAu
Mostra il tuo codice reale. Quello che stai scrivendo non sembra corretto. –
Come si presenta il costruttore, da quale comportamento si conclude che funziona? – markus