Suprascrierea unei funcții într-o clasă de plugin
18 oct. 2017, 11:02:35
Vizualizări: 17.8K
Voturi: 5
Am ceva similar cu aici.
Într-o clasă de plugin third-party avem o funcție pe care vreau să o suprascriu prin extinderea acelei clase.
Funcția originală din clasă:
class Import_Facebook_Events_Facebook {
public function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
return null;
}
//alt cod aici
}
Ce am încercat eu, dar nu a funcționat (niciun efect):
class Import_Facebook_Events_Facebook_Ext extends Import_Facebook_Events_Facebook {
public function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
$facebook_event->place->id = ''; //am adăugat această linie
//return null;
}
//alt cod aici
}
new Import_Facebook_Events_Facebook_Ext();
Ce este greșit aici? Cum pot obține efectul dorit?
Clasa originală Import_Facebook_Events_Facebook()
este instanțiată dintr-o altă clasă:
class Import_Facebook_Events{
private static $instance;
public static function instance() {
if( ! isset( self::$instance ) && ! (self::$instance instanceof Import_Facebook_Events ) ) {
self::$instance = new Import_Facebook_Events;
self::$instance->facebook = new Import_Facebook_Events_Facebook();
}
return self::$instance;
}
}
Și clasa de mai sus este instanțiată dintr-o funcție separată:
function run_import_facebook_events() {
return Import_Facebook_Events::instance();
}

Iurie
1.13K
Comentarii
Toate răspunsurile la întrebare
1
1
În sfârșit, am reușit să rezolv problema mea:
class Import_Facebook_Events_Facebook_Ext extends Import_Facebook_Events_Facebook {
function get_location( $facebook_event ) {
if ( !isset( $facebook_event->place->id ) ) {
$facebook_event->place->id = '';
//return null;
}
//alte instrucțiuni aici
return $event_location;
}
}
$new_ife_events = run_import_facebook_events();
$new_ife_events->facebook = new Import_Facebook_Events_Facebook_Ext();
O întrebare: ultimele două linii de cod trebuie incluse într-o funcție/acțiune?

Iurie
1.13K
18 oct. 2017 13:07:52
Întrebări similare
2
răspunsuri
2
răspunsuri