Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Om navngivning og 'logiske enheder'

5 views
Skip to first unread message

Bertel Lund Hansen

unread,
May 2, 2013, 10:51:34 AM5/2/13
to
Hej allesammen

Jeg arbejder lige nu med at opbygge et script med klasser. I den
forbindelse har jeg spurgt i den overordnede gruppe om globale
konstanter b�r l�gges i en s�rlig klasse. To svar siger lettere
ironisk at det er overfl�digt.

Er der andre m�der i PHP at oprette en gruppe p� hvor man kan
samle besl�gtede konstanter? - samme princip som f.eks.
$_SESSION[] (men gerne en p�nere notation).

--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/

Martin

unread,
May 2, 2013, 2:34:17 PM5/2/13
to
On 02-05-2013 16:51, Bertel Lund Hansen wrote:
> Hej allesammen
>
> Jeg arbejder lige nu med at opbygge et script med klasser. I den
> forbindelse har jeg spurgt i den overordnede gruppe om globale
> konstanter bør lægges i en særlig klasse. To svar siger lettere
> ironisk at det er overflødigt.
>
> Er der andre måder i PHP at oprette en gruppe på hvor man kan
> samle beslægtede konstanter? - samme princip som f.eks.
> $_SESSION[] (men gerne en pænere notation).
>

Jada...

Lad os kigge lidt på dependency injection

Først så laver vi lige vores konfiguration i en PHP fil - den kaster
bare et array ud

<?php
return array(
'DB\PDO' => array(
'contructor' => array(
'host' => 'localhost',
'dbname' => 'testdb',
'user' => 'root',
'password' => ''
)
)
);

<?php
# DB\PDO

class DB\PDO extends \PDO {

protected $pdo;

public function __construct($host, $dbname, $user, $password) {
$this->pdo = new \PDO(sprintf('mysql:%s/%s', $host, $dbname),
$user, $password);
$this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE,
\PDO::FETCH_OBJ);
$this->pdo->setAttribute(\PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES
"utf8"');
}
}



Nu kan man så gøre således

<?php
use DI\Annotation\Inject;

class MyClass
{

/**
* @Inject()
* @var DB\PDO
*/
protected $db;

}

Eller man kan

<?php
class MyClass {

private $pdo;

public function __construct(DB\PDO $pdo) {
$this->pdo = $pdo;
}
}

Så er din DB\PDO klasse en del af MyClass - Dependency injection gjort
på den rigtige måde :)

http://mnapoli.github.io/PHP-DI/doc/getting-started


Du kan også bare lave en ganske simpel

<?php
# config/parameters.php
$config = array(
'foo' => 'bar'
);

Så skal du bare require din config/parameters.php hver gang, så har du
din config i $config

fx
<?php
#index.php
require 'config/parameters.php';

var_dump($config);

Her mister man så bare ret ofte IDE til at finde ud af hvad der er inde
i arrayet osv.
0 new messages