Üks objektorienteeritud programmeerimisega töötamise eeliseid on võime määratleda liideseid nii, et neid liideseid rakendavatel klassidel on ranged funktsioonid, mida nimetatud klassid peavad rakendama.
See on igatahes klassiliidese määratlus :
Liides on leping, mis määrab meetodite, väljade ja atribuutide komplekti, mis on saadaval mis tahes rakendusobjektil
Kuidas see aga välja näeb, kui meie eesmärk on luua nimeruumiga lahendus WordPressi pistikprogrammide liideste (või liidese) lisamiseks klassile, mida saab kasutada stiilitabelite või JavaScripti failide järjestamiseks?
WordPressi pistikprogrammide liidesed: varad
Selle postituse jaoks eeldame, et me määratleme liidese, mida kasutatakse WordPressi haldusalas. See tähendab, et loome liidese, mida kasutatakse laaditabelite ja JavaScripti failide järjestamiseks.
Peame lisama järgmise:
- nimeruum, mida saab kasutada kogu projekti vältel,
- funktsioon klassi initsialiseerimiseks,
- funktsioon varade tegelikuks järjekorda seadmiseks.
Ja kuna see on piisavalt üldine, et seda saaks kasutada JavaScripti ja stiilitabelite jaoks, olen otsustanud nimetada seda lihtsalt Varaks.
Lõpptulemus võib välja näha umbes selline :
<?php
namespace AcmeAdminInterfaces;
interface Asset {
public function init();
public function enqueue();
}
Järgmiseks peame liidese klassiga tegelikult rakendama . See peaks olema suhteliselt lihtne, kuna oleme määranud meetodid, mida tuleb rakendada.
Pange tähele, et pakun paar atribuuti, mis on määratud klassi konstruktoris. Need on selle klassi spetsiifilised ja muudavad faili tegeliku järjekorda panemise pisut lihtsamaks.
<?php
namespace AcmeAdmin;
use AcmeAdminInterfaces;
class JavaScript_Assets implements InterfacesAsset {
private $assets_dir;
private $js_dir;
public function __construct() {
$this->assets_dir = trailingslashit(
plugin_dir_url( __FILE__ ). 'assets'
);
$this->js_dir = trailingslashit( $this->assets_dir. 'js' );
}
public function init() {
add_action(
'admin_enqueue_scripts',
array( $this, 'enqueue') );
}
public function enqueue() {
wp_enqueue_script(
'toggle-admin-notices',
$this->js_dir. 'admin.js',
array( 'jquery' ),
false
);
}
}
Mõned asjad, mida ülaltoodud koodi kohta tähele panna:
- see kasutab märksõna use, et PHP teaks, et töötame Asset liidesega,
- Lisasin nime ette JavaScripti, et oleks selge, millist tüüpi varaga ma töötan.
Lõpuks, liidest rakendava klassi eksemplarimiseks tehke lihtsalt järgmist:
<?php
$assets = new AdminJavaScript_Assets();
$assets->init();
Muidugi, see konkreetne näide on lihtne ja ma jätsin tavalised koodikommentaarid välja, kuid see on üldiselt loetavuse huvides. Kui soovite midagi sellist tegevuses näha, vaadake üle selle lähtekood
Kui soovite midagi sellist tegevuses näha, vaadake üle selle konkreetse pistikprogrammi lähtekood .