1. Go to this page and download the library: Download jelix/profiles library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jelix / profiles example snippets
# somewhere in a file hello world");
$iniFile = '/somewhere/profiles.ini';
$cacheFile = '/somewhere/profiles.cache.json';
$reader = new \Jelix\Profiles\ProfilesReader();
/** @var \Jelix\Profiles\ProfilesContainer $profiles */
$profiles = $reader->readFromFile($iniFile, $cacheFile);
// get the profile named 'foo' for the type 'jdb'
$profile = $profiles->get('jdb', 'default');
$myDatabaseConnection = new Database(
$profile['driver'],
$profile['host'],
$profile['login'],
$profile['password']
);
// example of a plugin that process a profile containing access parameters to an SQL database
class myDbPlugin extends \Jelix\Profiles\ReaderPlugin
{
protected function consolidate($profile)
{
$newProfile = $profile;
// Check that the `host` parameter does exist
if (!isset($profile['driver']) || $profile['driver'] == '' ||
!isset($profile['host']) || $profile['host'] == '' ||
!isset($profile['database']) || $profile['database'] == ''
) {
throw new \Exception('host or database are missing from the profile');
}
// check if port is present, if not, let's set a default value
if (!isset($profile['port']) {
$profile['port'] = 1234;
}
if ($driver == 'pgsql') {
// let's generate a connection string
$newProfile['connectionstr'] = 'host='.$profile['host'].';port='.$profile['port'].'database='.$profile['database'];
}
// here you probably want to do more checks etc, but for the example, it is enough.
// return a new profile, that is ready to be used by your database connection object without checking
// parameters or calculate connectionstr, at each http requests, because all these parameters will be stored
// into a cache by ProfilesReader
return $newProfile;
}
}
$reader = new \Jelix\Profiles\ProfilesReader([
// category name => plugin class name
'db' => 'myDbPlugin'
]);
class myDbPlugin extends \Jelix\Profiles\ReaderPlugin
{
// for the example, let's redefine the constructor to have a different constructor than ReaderPlugin...
public function __construct() {}
// ...
}
$reader = new \Jelix\Profiles\ProfilesReader(function($category) {
if ($category == 'db') {
return new myDbPlugin();
}
return null;
});
class myDbPlugin extends \Jelix\Profiles\ReaderPlugin implements
{
protected function consolidate($profile)
{
// ...
}
public function getInstanceForPool($name, $profile)
{
return new Database(
$profile['driver'],
$profile['host'],
$profile['login'],
$profile['password']
);
}
/**
* @param string $name
* @param Database $instance
* @return void
*/
public function closeInstanceForPool($name, $instance)
{
$instance->close()
}
}
bash
# variables set in the environment of PHP-FPM, PHP-CLI, or Apache (with the PHP module)
MYAPP_MYSQL_LOGIN=admin
MYAPP_MYSQL_PASSWORD=Sup3Rp4ssw0rd!
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.