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.