Namespace

Katika pogramming wakati mwingine unahitaji jina moja la class litumike zaidi ya mara moja kwenye class zaidi ya moja. Sasa OOP inakataa huwezi kuwa na class zaidi ya moja zenye jina moja kwenye ukurasa mmoja. Namespace imekuja kuondoa changamoto hiyo kwa kutumia namespace unaweza kutumia jina moja kwenye class zaidi ya moja.

 

Namespace husaidia kuchanganya class ama code zinazofanana katika utendaji wa kazi kuwa sehemu moja. Tunatengeneza namespace kw akutumia keyword namespace ikifuatiwa na jina la namespace mwanzoni kabisa kabla ya kuandika class. Na tunapotaka kuitumia tunafanya hivyo hivyo. 

 

Hapa chini nimekuletea mfano wa class mbili zenye jina moja kwa kutumia namespace. Ama unaweza kutumia njia ya slash, yaani kwanza utaanza na jina la hiyo namespace ikifuatiwa na backslash ikifutwa na jina la hiyo class. Mfano wa hapo chini nimekuwekea njia zote mbili, namespace ya kwanza nimeitumia kwa njia ya kwanza na ya pili nmetumia hiyo njia ya pili

<?php

 

// Namespace ya "gari"

namespace gari;

 

class gari {

   public static $jina = 'Toyota';

 

   public function tangazo() {

       return 'tunauza gari aina ya ' . self::$jina;

   }

}

 

// Namespace ya "toyota"

namespace toyota;

 

class gari {

   public static $jina = 'Basi';

 

   public function tangazo() {

       return 'tunauza gari aina ya ' . self::$jina . '<br>';

   }

}

 

// Kutumia class "gari" kutoka namespace ya "toyota"

namespace toyota;

$myobToyota = new gari();

echo $myobToyota->tangazo();

 

// Kutumia class "gari" kutoka namespace ya "gari"

$myobGari = new garigari();

echo $myobGari->tangazo();

 

Hapo kuna namespace mbili ambazo ni gari  na toyota, kila namespace moja ina class inayoitwa gari. 

 

Namespace inaweza pia kutumika hata kwenye procedural programming. Angalia mfano hapo chini

 

<?php

// File: math_operations.php

// Nafasi (namespace) inayohusiana na operesheni za hesabu

namespace operations;

 

// Function inayotekeleza operesheni ya kuongeza

function add($a, $b) {

   return $a + $b;

}

 

// Constant inayowakilisha thamani ya PI

const PI = 3.14;

 

// File: string_operations.php

// Nafasi (namespace) inayohusiana na operesheni za string

namespace operations2;

 

// Function inayotekeleza operesheni ya kuongeza strings

function add($string1, $string2) {

   return $string1 . $string2;

}

 

// Constant inayowakilisha thamani ya PI kwa strings

const PI = 'String PI';

 

// Matumizi ya nafasi (namespace) na vifungo (aliases)

use operations as math;

use operations2 as strings;

 

// Kutumia functions na constants kutoka nafasi ya "operations" (math_operations)

$result = mathadd(5, 3);

echo "Math Sum: $result <br>";  // Matokeo: Math Sum: 8

 

echo "Math PI: " . mathPI . "<br>";  // Matokeo: Math PI: 3.14

 

// Kutumia functions na constants kutoka nafasi ya "operations2" (string_operations)

$result = stringsadd('Hello', ' World');

echo "String Concatenation: $result <br>";  // Matokeo: String Concatenation: Hello World

 

echo "String PI: " . stringsPI . "<br>";  // Matokeo: String PI: String PI

 

Hapo kuna kitu kipya utakuwa umekiona 

use operations as math;

use operations2 as strings;

 

Hapo tumetumia keyword use ili kufanya alias yaani namespace tumeipa jina la utani. Badala ya kuitwa operation sasa itaitwa math, na hiyo ingine badala ya kuitwa operation2 sasa itaitwa strings. Ndio maana utaona hata wakati wa kuzitumia nimetumia majina haya mapya. 

$result = mathadd(5, 3);

$result = stringsadd('Hello', ' World');

Mwisho:

Katika somo linalofuata tutakuja kujifunza kufanya loop kwenye class kwa kutumia foreach loop.