_construct functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

11/05/2018 10:01:19
Quote Anchor link
Voor een website waar ik aan werk wil ik een aantal basis variabelen definiëren die ik elders in best wel veel functies nodig heb, b.v. voor de verwerking van e-mail (contact formulier, nieuwsbrief formulier, reservering formulier etc.) Momenteel gebruik ik deze variabelen op deze manier in de functies waar ik ze nodig heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$bedrijfs_naam         =     'Mijn bedrijf';
$bedrijf_email       =     'info@email.com';
$ondertekening        =    'Contactpersoon';
// En zo zijn er nog 4

$headers              =      'From: ' . $bedrijfs_naam . ' <' . $bedrijf_email . '>' . "\r\n" .

En dat in wel 6 verschillende functies, hetgeen niet echt efficient is te noemen. Nu is mijn vraag wat de beste plaats is om deze variabelen te definiëren. Ik heb gisteren en vannochtend op verschillende blogs en tutorial sites gekeken. Over het algemeen werd er aangegeven dat dit het best gedaan kan worden in een __construct functie. Ik heb deze wel in mijn framewerk maar ik heb werkelijk geen idee hoe ik bijvoorbeeld de drie bovengenoemde variabelen hier in verwerk. Dit is wat er nu in deze functie staat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
protected $pageId;
protected $layout = 'layout';
protected $page;
protected $blog;
protected $widgets;

public function __construct()
{
    $pdo            = Db::getInstance();
    $this->page     = new Model_Page($pdo);
    $this->blog     = new Model_Blog($pdo);
    $this->widgets  = new Model_Widgets($pdo);
}

Kan iemand mij misschien uitleggen hoe ik bijvoorbeeld de eerder genoemde variabelen in de __construct functie verwerk en op welke wijze ik ze vervolgens elders gebruik.

Alvast bedankt
Gewijzigd op 11/05/2018 10:02:32 door Donald Boers
 
PHP hulp

PHP hulp

21/10/2021 17:33:53
 
Rob Doemaarwat

Rob Doemaarwat

11/05/2018 10:56:15
Quote Anchor link
Als je ze werkelijk aan dit object toe wilt voegen zou je iets van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
//bestaande protected vars
protected $bedrijfsNaam = null;

public function __construct($bedrijfs_naam)
{
  $this->bedrijfsNaam = $bedrijfs_naam;
  $pdo = ...
kunnen doen (en herhalen voor elke var).

Maar ik zie niet in waarom je ze juist in dit object zou willen knallen (tenzij dit het "e-mail object" is).

Als ze echt fixed zijn (binnen een project) zou je d'r ook gewoon constanten van kunnen maken, dan kun je ze gewoon overal uit de lucht grijpen. Dus ergens in een config bestand, of in ieder geval iets wat je altijd include:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
define('BEDRIJFS_NAAM','Mijn bedrijf');
Op het moment dat je de bedrijfsnaam dan nodig hebt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$headers = From: ' . BEDRIJFS_NAAM . ' <' . BEDRIJFS_EMAIL . '>' . "\r\n" .
(dan hoef je dus niet steeds global ... te doen).

Maar een beetje framework beschikt vaak ook wel over een config constructie waarbij je iets vergelijkbaars kunt doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$headers = From: ' . $this->config('bedrijfsNaam') . ' <' . $this->config('bedrijfsEmail') . '>' . "\r\n" .
 
Donald Boers

Donald Boers

11/05/2018 11:49:52
Quote Anchor link
Rob Doemaarwat op 11/05/2018 10:56:15:
Als ze echt fixed zijn (binnen een project) zou je d'r ook gewoon constanten van kunnen maken, dan kun je ze gewoon overal uit de lucht grijpen. Dus ergens in een config bestand, of in ieder geval iets wat je altijd include:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
define('BEDRIJFS_NAAM','Mijn bedrijf');
Op het moment dat je de bedrijfsnaam dan nodig hebt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$headers = From: ' . BEDRIJFS_NAAM . ' <' . BEDRIJFS_EMAIL . '>' . "\r\n" .
(dan hoef je dus niet steeds global ... te doen).

@Rob Doemaarwat. Afgaande op wat ik elders las dacht ik dat het de aangewezen plaats was, maar de door jou geopperde define functie spreekt me enorm aan. Hartelijk bedankt!!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.