Libraries (PHP): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
(Verwijst door naar Libraries (PHP - Algemeen))
 
(2 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
== Third-party bibliotheken ==
+
#redirect[[Libraries (PHP - Algemeen)]]
 
 
Belangrijkste commando's rondom bibliotheken:
 
 
 
* <code>include</code> [https://www.php.net/manual/en/function.include.php]
 
* <code>require</code> [https://www.php.net/manual/en/function.require.php]
 
* Libraries kun je meestal mbv. <code>apt install</code> binnenhengelen
 
* Zie [[PHP installeren]] voor meer!
 
 
 
=== Casus: SoapClient (april 2019) ===
 
 
 
Windows: dll uit-commentariseren in php.ini. Linux (misschien de verkeerde library: ''Soap'' ipv. ''SoapClient''?) [https://stackoverflow.com/questions/2509143/how-do-i-install-soap-extension]:
 
 
 
<pre>
 
sudo apt-get install php7.0-soap
 
sudo systemctl restart apache2
 
</pre>
 
 
 
''' Debuggen (Bash) '''
 
 
 
Commando
 
 
 
<pre>
 
php -i | grep -i soap
 
</pre>
 
 
 
Geeft:
 
 
 
<pre>
 
/etc/php/7.0/cli/conf.d/20-soap.ini,
 
soap
 
Soap Client => enabled
 
Soap Server => enabled
 
soap.wsdl_cache => 1 => 1
 
soap.wsdl_cache_dir => /tmp => /tmp
 
soap.wsdl_cache_enabled => 1 => 1
 
soap.wsdl_cache_limit => 5 => 5
 
soap.wsdl_cache_ttl => 86400 => 86400
 
</pre>
 
 
 
Handig: Je ziet dat ik inderdaad de CLI-variant gebruik op dit moment.
 
 
 
Commando
 
<pre>
 
apt-cache search php | grep -i soap
 
</pre>
 
 
 
toont een overzicht van beschikbare apt-downloads met de term ''soap'' in de titel. Uitkomst:
 
 
 
<pre>
 
libnusoap-php - SOAP toolkit for PHP
 
php-soap - SOAP module for PHP [default]
 
php7.0-soap - SOAP module for PHP
 
python-pysimplesoap - simple and lightweight SOAP Library (Python 2)
 
python3-pysimplesoap - simple and lightweight SOAP Library (Python 3)
 
</pre>
 
 
 
Bron: https://stackoverflow.com/questions/11584426/how-do-i-enable-enable-soap-in-php-on-linux - Geweldig!
 
 
 
Verifiëren welke modules ''enabled'' zijn:
 
 
 
<pre>
 
php -m
 
 
 
 
 
[PHP Modules]
 
calendar
 
Core
 
ctype
 
curl
 
date
 
dom
 
exif
 
fileinfo
 
filter
 
ftp
 
gd
 
gettext
 
hash
 
iconv
 
json
 
libxml
 
mbstring
 
mysqli
 
mysqlnd
 
openssl
 
pcntl
 
pcre
 
PDO
 
pdo_mysql
 
Phar
 
posix
 
readline
 
Reflection
 
session
 
shmop
 
SimpleXML
 
soap
 
sockets
 
SPL
 
standard
 
sysvmsg
 
sysvsem
 
sysvshm
 
tokenizer
 
wddx
 
xml
 
xmlreader
 
xmlwriter
 
xsl
 
Zend OPcache
 
zlib
 
 
 
[Zend Modules]
 
Zend OPcache
 
</pre>
 
 
 
=== Casus: Installatie GD (nov. 2019) ===
 
 
 
<pre>
 
sudo apt install php-gd
 
 
 
Reading package lists... Done
 
Building dependency tree     
 
Reading state information... Done
 
The following additional packages will be installed:
 
  fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libtiff5 libwebp6
 
  libxpm4 php7.2-gd
 
Suggested packages:
 
  libgd-tools
 
The following NEW packages will be installed:
 
  fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libtiff5 libwebp6
 
  libxpm4 php-gd php7.2-gd
 
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
 
Need to get 1892 kB of archives.
 
After this operation, 6237 kB of additional disk space will be used.
 
Do you want to continue? [Y/n]
 
 
 
...
 
</pre>
 
 
 
+ herstarten van Apache (<code>a2re</code>)
 
 
 
''' Resultaat '''
 
 
 
''Soap'' en/of ''SoapClient'' bleek gewoon actief te zijn en hoefde niet apart geladen te worden met <code>require</code> oid. - Het was weer eens gemakkelijker dan ik dacht.
 
 
 
== Eigen bibliotheken - Locatie ==
 
 
 
Ik gebruik WordPress bijna alleen in combinatie met de PHP-API. Tot ca. 2018 plaatste ik functies die ik wilde hergebruiken, in het standaard WordPress-bestand <code>functions.php</code>.
 
 
 
=== Laptop ===
 
 
 
Rond 2019 ben ik gestopt om functies in WordPress' <code>functions.php</code> te plaatsen. De diverse functies heb ik ondergebracht in twee bestanden:
 
 
 
* <code>/Dropbox/Overhead/Scripts/php/dvb_db_functions.php</code>
 
* <code>/Dropbox/Overhead/Scripts/php/dvb_wordpress_functions.php</code>.
 
 
 
In april 2021 heb ik de paden licht gewijzigd:
 
 
 
* <code>/Dropbox/Overhead/Scripts/php-library-dvb/dvb_db_functions.php</code>
 
* <code>/Dropbox/Overhead/Scripts/php-library-dvb/dvb_wordpress_functions.php</code>.
 
 
 
Op m'n laptop wordt er niets opgeslagen in mappen buiten Dropbox, zoals </code>/opt</code> or whatever.
 
 
 
=== Servers ===
 
 
 
Ik heb op zo'n beetje al m'n servers een handjevol met eigen routines (bv. voor het updaten van sites). Deze commando's en bibliotheken bevinden zich hier:
 
 
 
<pre>
 
/use/local/bin
 
</pre>
 
 
 
Wordt tijd voor een versioning-systeem: Synchronisatie is altijd gedoe.
 
 
 
== Eigen bibliotheken - Samenvoegen of per functie? ==
 
 
 
Dilemma: Stop ik al m'n functies (gerelateerd aan een bepaald onderwerp, bv. WordPress) in één bestand, of per functie een apart bestand?
 
 
 
=== Nadelen aparte functies ===
 
 
 
* Onhandig om te synchroniseren
 
* Onhandig omdat ik in een script vermoedelijk naar meerdere functies tegelijkertijd moet verwijzen (of gaat dat in één keer door $PATH?)
 
 
 
=== Voordelen aparte functies ===
 
 
 
* Je ziet in één oogopslag welke functies er zijn
 
* De eigenlijke bestanden met code zijn overzichtelijker
 
* Ik denk dat ik al snel variaties op functies ga krijgen (bv. dezelfde functie maar met verschillende default-waardes of context), en het is waarschijnlijk intuïtief om die varianten wel allemaal in één bestand te plaatsen
 
 
 
=== Nadelen samengevoegde functies ===
 
 
 
* Geen overzicht van functies
 
* Code is groot en onoverzichtelijk - Ik heb daardoor drie niveaus van hiërarchie in code ipv. de gebruikelijke twee. Daar ben ik niet blij mee
 
* Foutgevoelig
 
* Het gaat nooit lukken om functies op een intuïtieve manier samen te voegen. Tot april 2021 had ik bibliotheken <code>dvb_</code>
 
 
 
=== Voordelen samengevoegde functies ===
 
 
 
== Zie ook ==
 
 
 
* [[Bestandsstructuur (Linux)]]
 
* [[Linux Mint - Installatie 2020]]
 
* [[PHP installeren]]
 

Huidige versie van 26 apr 2021 om 16:16

Doorverwijzing naar: