PHP પાવરહાઉસ: ડેવલપર માટેની 10 જરૂરી ખાસિયતો – ભાગ 1

/* by Dharmesh Patel - September 6, 2024 */
PHP

આ બ્લોગમાં PHP સ્ક્રિપ્ટિંગ ભાષાના કેટલીક શાનદાર વિશેષતાઓ દર્શાવવામાં આવશે, જે તમારા કોડિંગ અનુભવને મહત્ત્વપૂર્ણ રીતે સુધારી શકે છે. આ ખાસિયતોનો ઉપયોગ કરીને, તમે વધુ સ્વચ્છ અને વાંચનીય કોડ લખી શકશો. ચાલો, એવી ટોચની 10 PHP વિશેષતાઓમાં ડૂબકી લગાવીએ જે તમારા ડેવલપમેન્ટ પ્રક્રિયામાં સુધારો લાવી શકે.

1. રેડઓનલિ પ્રોપર્ટીઝ

રેડઓનલિ પ્રોપર્ટીઝ, PHP 8.1 માં રજૂ કરવામાં આવી, તમને એવી પ્રોપર્ટીઝ નિર્ધારિત કરવાની પરવાનગી આપે છે જેને ફક્ત એક જ વાર લખી શકાય. આ અનિર્ધારિત ઑબ્જેક્ટ્સ બનાવવા માટે ઉપયોગી છે જ્યાં એક વાર પ્રોપર્ટી સેટ થઈ જાય, પછી તેને બદલવામાં નહિ આવે. આ ડેટાની અખંડિતતા સુનિશ્ચિત કરવામાં અને તમારા કોડમાં બગ્સ ઘટાડવામાં મદદ કરી શકે છે.

આ રહ્યું રેડઓનલિ પ્રોપર્ટીઝનો PHPમાં ઉપયોગ કેવી રીતે કરવો તેની એક ઝડપી ઉદાહરણ:

class User {
    public readonly string $username;

    public function __construct(string $username) {
        $this->username = $username;
    }
}

$user = new User('dharmesh');
echo $user->username; // Outputs: dharmesh

// Trying to modify the readonly property will result in an error
$user->username = 'dharm'; // Error: Cannot modify readonly property

PHPમાં રેડઓનલિ પ્રોપર્ટીઝ ખાસ કરીને તેવા પરિસ્થિતિમાં ઉપયોગી હોય છે, જ્યાં તમે ખાતરી કરવા માંગો છો કે કેટલાક મૂલ્યો એકવાર સેટ થઈ ગયા પછી સ્થિર રહે. આ સામાન્ય રીતે તેવા કેસોમાં જોવા મળે છે, જ્યાં એક વાર ઑબ્જેક્ટનું રાજ્ય શરૂ થઈ ગયા પછી તેને બદલવામાં ન આવે, જે તમારા કોડમાંimmutability (અપરિવર્તનીયતા)ને પ્રોત્સાહન આપે છે.

બેનિફિટ્સ:

  1. ડેટા ઈન્ટેગ્રિટી: રેડઓનલિ પ્રોપર્ટીઝ તમારી ઑબ્જેક્ટ્સની અંદરના ડેટાની અખંડિતતાને સુરક્ષિત કરવામાં મદદ કરે છે. એક વાર સેટ થાય પછી, મૂલ્ય સાથે ચેડા કરી શકાય નથી, જે સુરક્ષિત અને મહત્વપૂર્ણ એપ્લિકેશન્સ માટે ખાસ મહત્વપૂર્ણ છે..
  2. સિમ્પ્લિફાઈડ ડીબગિંગ: કારણ કે રેડઓનલિ પ્રોપર્ટીનું મૂલ્ય ઇનિશિયલાઇઝેશન પછી બદલાઈ શકતું નથી, તે ડીબગિંગ દરમિયાન જટિલતાને ઘટાડે છે. તમે નિશ્ચિત કરી શકો છો કે પ્રોપર્ટીનું મૂલ્ય ઑબ્જેક્ટની સંપૂર્ણ જીવનસાઇકલ દરમિયાન સ્થિર રહે છે.
  3. થ્રેડ સેફ્ટી: મલ્ટિ-થ્રેડેડ વાતાવરણમાં, રેડઓનલિ પ્રોપર્ટીઝ રેસ કન્ડિશન્સને અટકાવી શકે છે, જ્યાં ઘણા બધા થ્રેડ્સ એક સાથે dezelfde પ્રોપર્ટી ફેરફાર કરવાનો પ્રયાસ કરી શકે છે.

વાસ્તવિક પરિસ્થિતિ:

Imagine you’re building a financial application where each Transaction object has an amount and transactionId. Once these are set, they shouldn’t be changed, as altering them could lead to serious financial discrepancies.

PHP માં રેડઓનલિ પ્રોપર્ટીઝ તમારા કોડમાં વધુ કન્ટ્રોલ અને સુરક્ષા લાવે છે, ખાસ કરીને ત્યારે જ્યારે તમે એવા મહત્વપૂર્ણ ડેટા સાથે કામ કરી રહ્યા હો, જે એકવાર સેટ થઈ ગયા પછી સ્થિર રહેવું જોઈએ.

2. એનમ્સ

એનમ્સ (એનમરેશન્સ માટે સંક્ષિપ્ત) PHP 8.1 માં પરિચિત કરાવવામાં આવ્યા હતા અને કોઈ પ્રોપર્ટી ધરાવતી મૂલ્યોના નામિત સેટને વ્યાખ્યાયિત કરવાની રીત પ્રદાન કરે છે. એનમ્સ એક ફિક્સ્ડ મૂલ્યોના સેટને ટાઇપ-સેફ રીતે રજૂ કરવા માટે ઉપયોગી છે, જેનાથી તમારો કોડ વધુ વાંચનીય, જાળવી રાખવા લાયક અને ઓછો બગપ્રવણ બને છે.

PHP માં એનમ્સની મૂળભૂત રચના:

An enum in PHP is defined using the enum keyword. Enums can have either pure values (which don’t contain any data) or backed values (which map to scalar values like strings or integers).

પ્યુર એનમ્સ:

પ્યુર એનમ્સ સરળ હોય છે અને તેમાં કોઈપણ સંબંધિત મૂલ્યો નથી. જ્યારે તમારે માત્ર નિર્ધારિત કોન્સ્ટન્ટ્સના નામની સેટની જરૂર હોય ત્યારે તેઓ ઉપયોગી થાય છે.

enum Status {
    case Pending;
    case InProgress;
    case Completed;
}

$status = Status::Pending;

if ($status === Status::Pending) {
    echo "The task is pending.";
}

બેક્ડ એનમ્સ:

બેક્ડ એનમ્સ દરેક કિસ્સાને એક નિર્ધારિત સ્કેલર મૂલ્ય (જેમ કે સ્ટ્રિંગ અથવા ઇન્ટેજર) સાથે સંકળે છે. આ ત્યારે ઉપયોગી થાય છે જ્યારે એનમ્સને અન્ય સિસ્ટમ્સ સાથે ઇન્ટરફેસ કરવાની જરૂર હોય અથવા જ્યારે તમને આ મૂલ્યોને સ્ટોર કરવાની જરૂર હોય, જેમ કે ડેટાબેઝમાં.

enum OrderStatus: string {
    case Pending = 'pending';
    case Shipped = 'shipped';
    case Delivered = 'delivered';
    case Cancelled = 'cancelled';
}

$orderStatus = OrderStatus::Shipped;

echo $orderStatus->value; // Outputs: shipped

// You can also create an enum instance from a scalar value
$orderStatus = OrderStatus::from('delivered');

echo $orderStatus->value; // Outputs: delivered

બેનિફિટ્સ:

  1. ટાઈપ સેફ્ટી: એનમ્સ ખાતરી કરે છે કે માત્ર પૂર્વનિર્ધારિત મૂલ્યો જ ઉપયોગમાં લેવાય છે, જે અમાન્ય મૂલ્યોના કારણે થતા બગ્સને અટકાવે છે. જો તમે એનમનો ભાગ ન હોતા એવા મૂલ્યનો ઉપયોગ કરવાનો પ્રયાસ કરશો, તો તમને એરર મળશે.
  2. બેટર કોડ રીડેબિલિટી: એનમ્સ કોન્સ્ટન્ટ્સને નામ આપે છે, જેના કારણે કોડ વધુ વર્ણનાત્મક અને સમજવા માટે સરળ બની જાય છે.
  3. ડેટા વેલિડેશન: એનમ્સ આપમેળે તપાસ કરે છે કે કોઈ પ્રોપર્ટી પૂર્વનિર્ધારિત મૂલ્યમાંથી એક પર સેટ થયેલી છે કે નહીં, જેથી વધારાના વેલિડેશન લોજિકની જરૂરિયાત ઘટાડાય છે.
  4. ઇન્ટિગ્રેશન વિથ ડેટાબેસેસ: બેક્ડ એનમ્સ ખાસ કરીને ત્યારે ઉપયોગી થાય છે જ્યારે તમારે એનમ મૂલ્યોને ડેટાબેઝમાં સંગ્રહિત કરવા પડે. તમે સરળતાથી એનમ મૂલ્યોને સ્ટ્રિંગ્સ અથવા ઇન્ટેજર્સમાં મેપ કરી શકો છો, જેને ડેટાબેઝના કૉલમમાં સંગ્રહિત કરી શકાય છે.

પ્રેક્ટિકલ સિનેરિયો: પેમેન્ટ મેટોડ્સ:

ધારણ કરો કે તમે એક પેમેન્ટ પ્રોસેસિંગ સિસ્ટમ બનાવી રહ્યા છો જ્યાં વપરાશકર્તાઓ વિવિધ પેમેન્ટ મોથડ્સ (ક્રેડિટ કાર્ડ, પેપાલ, બેંક ટ્રાન્સફર) પસંદ કરી શકે છે. એનમ્સ મદદ કરી શકે છે કે ફક્ત માન્ય પેમેન્ટ મોથડ્સ જ પસંદ કરવામાં આવે.

PHPમાં એનમ્સ એક મજબૂત રીત ઉમેરે છે જેમાં ફિક્સ્ડ મૂલ્યોના સેટને મેનેજ કરી શકાય, જેનાથી તમારો કોડ વધુ સુરક્ષિત અને જાળવી રાખવા માટે સરળ બને છે. તે ખાસ કરીને તેવા પરિસ્થિતિમાં લાભદાયક છે જ્યાં વેરિઅબલ ફક્ત મર્યાદિત સંખ્યામાં સંભવિત મૂલ્યો રાખી શકે છે, જેમ કે સ્ટેટસ, પ્રકારો, અથવા કેટેગરીઝ.

3. મૅચ એક્સપ્રેશન્સ

મૅચ એક્સપ્રેશન્સ, PHP 8.0 માં પરિચિત કરાવવામાં આવ્યા, સ્વિચ સ્ટેટમેન્ટ્સ જેવું જ કામ એક સરળ અને વધુ કાર્યક્ષમ રીતે કરે છે. તે તમને મૂલ્યોની તુલના કરવા અને એક પગલામાં પરિણામ પરત કરવા દે છે. મૅચ એક્સપ્રેશન્સ નાનું છે, ભૂલો ઘટાડે છે, અને સ્ટ્રિક્ટ ટાઇપ તુલનાની મંજૂરી આપે છે, તે દરમિયાન સીધું જ પરિણામ પરત કરે છે.

મૅચ એક્સપ્રેશનની મૂળભૂત રચના:

$result = match($variable) {
    value1 => result1,
    value2 => result2,
    value3, value4 => result3, // Multiple values can be matched to the same result
    default => defaultResult, // Default case (optional)
};

ઉદાહરણ: મૂળભૂત મૅચ એક્સપ્રેશન

$day = 'Monday';

$typeOfDay = match($day) {
    'Saturday', 'Sunday' => 'Weekend',
    'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' => 'Weekday',
    default => 'Unknown', // Default case, if none of the cases match
};

echo $typeOfDay; // Outputs: Weekday

PHPમાં મૅચ એક્સપ્રેશન્સ ફક્ત સરળ મૂલ્યો જેવા કે સ્ટ્રિંગ્સ અથવા નંબર જ નહીં, પરંતુ વધુ જટિલ ડેટા પ્રકારો જેમ કે એરે, ઑબ્જેક્ટ્સ, અથવા ફંક્શન્સના પરિણામો પણ પરત કરી શકે છે. આ લવચીકતા મૅચ એક્સપ્રેશન્સને વધુ વિગતવાર ઓપરેશન્સને હેન્ડલ કરવા અને મૅચ થયેલા કિસ્સાના આધારે સ્ટ્રક્ચર્ડ ડેટા પરત કરવા માટે સક્ષમ બનાવે છે.

class Animal {
    public function __construct(public $type, public $sound) {}
}

function getBirdDetails() {
    return ['type' => 'animal', 'sound' => 'tweet'];
}

$input = 'dog';

$result = match ($input) {
    'cat' => ['type' => 'animal', 'sound' => 'meow'],
    'dog' => new Animal('dog', 'bark'),
    'bird' => getBirdDetails(),
    default => null,
};

બેનિફિટ્સ:

  1. સ્ટ્રિક્ટ કમ્પેરિઝન: મૅચ એક્સપ્રેશન્સ સ્ટ્રિક્ટ કંપેરિઝન (===) નો ઉપયોગ કરે છે, તેથી ટાઇપ્સને બરાબર મૅચ થવી જ
  2. રિટર્નિંગ વેલ્યુઝ: સ્વિચ સ્ટેટમેન્ટ્સથી વિપરીત, મૅચ એક્સપ્રેશન્સ સીધું જ મૂલ્ય પરત કરે છે, જેના કારણે તે અસમાઇનમેન્ટ્સમાં અથવા ફંક્શન આર્ગ્યુમેન્ટ્સ તરીકે વાપરી શકાય છે.
  3. નો ફોલથ્રૂ: સ્વિચ સ્ટેટમેન્ટ્સમાં, ફૉલથ્રૂ ટાળવા માટે તમારે હાથથી `break` ઉમેરવું પડતું હોય છે. મૅચ એક્સપ્રેશન્સમાં આની જરૂર નથી, જેનાથી ભૂલોની સંભાવના ઘટે છે.
  4. ક્લીનર અને સિમ્પલર: મૅચ એક્સપ્રેશન્સ વધુ કોમ્પેક્ટ અને વાંચવામાં સરળ હોય છે, ખાસ કરીને જ્યારે ઘણા શરતો હોય ત્યારે.

PHPમાં મૅચ એક્સપ્રેશન્સ શરતી તર્કને હેન્ડલ કરવા માટે એક સાફ અને વધુ શક્તિશાળી રીત પ્રદાન કરે છે. તે તમારા કોડને વધુ વાંચનીય બનાવે છે, પુનરાવર્તિત કોડ ઘટાડે છે, અને સ્ટ્રિક્ટ કંપેરિઝનની ખાતરી આપે છે, જેનાથી ભૂલોની સંખ્યા ઓછી થાય છે. ભલે તમે મૂલ્યોની તુલના કરી રહ્યા હો, વિવિધ કિસ્સાઓ હેન્ડલ કરી રહ્યા હો, અથવા જટિલ ડેટા પરત કરી રહ્યા હો, મૅચ એક્સપ્રેશન્સ તમારા PHP કોડને સરળ અને સુધારી શકે છે.

4. કન્સ્ટ્રક્ટર પ્રોપર્ટી પ્રમોશન

કન્સ્ટ્રક્ટર પ્રોપર્ટી પ્રમોશન, PHP 8.0 માં પરિચિત કરાવવામાં આવેલ છે, જે ક્લાસ પ્રોપર્ટીઝને વ્યાખ્યાયિત અને આરંભ કરવાની રીતને સરળ બનાવે છે. તે તમને ક્લાસ પ્રોપર્ટીઝને સીધા જ કન્સ્ટ્રક્ટરમાં ઘોષિત અને સેટ કરવાની મંજૂરી આપે છે, જે પુનરાવર્તિત કોડને ઘટાડે છે અને તમારા ક્લાસને નાનું અને વધુ વાંચનીય બનાવે છે.

પરંપરાગત પદ્ધતિ vs. કન્સ્ટ્રક્ટર પ્રોપર્ટી પ્રમોશન

પરંપરાગત પદ્ધતિ:

પરંપરાગત પદ્ધતિમાં, તમારે ક્લાસ પ્રોપર્ટીઝને ઘોષિત કરવી પડે છે અને પછી કન્સ્ટ્રક્ટરની અંદર તેમને મૂલ્ય આપવું પડે છે. આ ઘણી વખત પુનરાવર્તિત કોડ તરફ દોરી જાય છે.

class User {
    private string $name;
    private int $age;

    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

કન્સ્ટ્રક્ટર પ્રોપર્ટી પ્રમોશન:

કન્સ્ટ્રક્ટર પ્રોપર્ટી પ્રમોશન સાથે, તમે પ્રોપર્ટીઝને કન્સ્ટ્રક્ટરની પેરામીટર્સ યાદીમાં જ સીધું જ ઘોષિત અને આરંભ કરી શકો છો, જે કોડને સરળ બનાવે છે.

class User {
    public function __construct(
        private string $name,
        private int $age
    ) {}
}

કેવી રીતે કામ કરે છે:

કન્સ્ટ્રક્ટરની સિગ્નેચરમાં:

  • Visibility કીવર્ડ (public, protected, private) નો ઉપયોગ પ્રોપર્ટી વ્યાખ્યાયિત કરવા માટે કરવામાં આવે છે.
  • પ્રોપર્ટી ટાઇપ અને નામની સ્પષ્ટતા સામાન્ય રીતે કરવામાં આવે છે.
  • PHP આપમેળે પ્રોપર્ટી બનાવે છે અને ઑબ્જેક્ટ સર્જન દરમિયાન પાસ કરાયેલા મૂલ્યને સોંપે છે.

બેનિફિટ્સ:

  1. લેસ કોડ: ઘણી પ્રોપર્ટીઝ ધરાવતા ક્લાસોમાં, ઓછું કોડ લખો અને જાળવો.
  2. ઇમ્પ્રૂવ્ડ રીડેબિલિટી: ક્લાસ વધુ સ્પષ્ટ છે કારણ કે પ્રોપર્ટી જાહેરાતો અને તેમનું સેટઅપ બધા કન્સ્ટ્રક્ટર માં છે.
  3. રિડ્યુસ્ડ એરર્સ: ઓછા લાઇનના કોડનો અર્થ એ છે કે ટાઈપો અથવા ભૂલોની સંભાવના ઓછી થાય છે, જેમ કે કોઈ પ્રોપર્ટીને સોંપવાનું ભૂલી જવું.
  4. વધુ સારી રીતે Refactoring.: જ્યારે રિફેક્ટરિંગ થાય છે, ત્યારે બદલાવ કરવું સહેલું બને છે કારણ કે પ્રોપર્ટી ની જાહેરાતો અને એસાઇનમેન્ટ્સ એક જ સ્થળે હોય છે.

PHP 8.0 માં કન્સ્ટ્રક્ટર પ્રોપર્ટી પ્રમોશનથી ક્લાસિસ બનાવવું વધુ સરળ બની જાય છે, ખાસ કરીને ઘણી પ્રોપર્ટીઝ સાથે. તે પુનરાવર્તિત કોડને ઘટાડે છે, તમારા કોડને વધુ સ્પષ્ટ બનાવે છે, અને ભૂલોથી બચવામાં મદદ કરે છે. આ ફીચર PHP ડેવલોપર્સ માટે ઉપયોગી છે, જેઓ સાદા ડેટા ઑબ્જેક્ટ્સથી લઈને જટિલ મોડલ્સ પર કામ કરે છે, જેથી કોડ વધુ આકર્ષક અને જાળવવા માટે સરળ બને છે.

5. નેમડ આર્ગ્યુમેંટ્સ

નેમડ આર્ગ્યુમેંટ્સ, PHP 8.0 માં રજૂ કરવામાં આવ્યા છે, જે તમને પેરામિટર નામો સ્પષ્ટ કરીને ફંક્શન અથવા મેડથમાં આર્ગ્યુમેંટ્સ પાસ કરવાની પરવાનગી આપે છે. આ તમારા કોડને વધુ સ્પષ્ટ અને લવચીક બનાવે છે, જેનાથી એ જળવાઇ રહે છે કે કયા આર્ગ્યુમેંટ્સનો ઉપયોગ થઈ રહ્યો છે, ભલે તેમનો ક્રમ જેવો પણ હોય.

function createUser(string $name, int $age, string $email = 'not_provided') {
    // Function body
}

createUser(name: 'John Doe', age: 30, email: '[email protected]');

બેનિફિટ્સ:

  1. ઇમ્પ્રૂવ્ડ રીડેબિલિટી: નેમડ આર્ગ્યુમેંટ્સ સ્પષ્ટ કરે છે કે કયા પેરામિટરને કયા વેલ્યુ જાય છે, જેનાથી તમારો કોડ વાંચવા માટે સરળ અને ઓછો અધૂરો બને છે.
  2. પેરામિટર ક્રમ સાથે લવચીકતા: તમે આર્ગ્યુમેંટ્સ કોઈ પણ ક્રમમાં પાસ કરી શકો છો, જે ત્યારે ઉપયોગી બને છે જ્યારે ફંક્શન અથવા મેડથમાં ઘણા વિકલ્પ પેરામિટર હોય.
  3. રિડ્યુસ્ડ એરર પોટેન્શિયલ: નેમડ આર્ગ્યુમેંટ્સ સ્પષ્ટ દર્શાવે છે કે કયું મૂલ્ય કયા પેરામિટરને ફાળવવામાં આવ્યું છે, જેથી ખોટા ક્રમમાં આર્ગ્યુમેંટ્સ પાસ કરવાની સંભાવના ઓછી થાય છે.

ઉદાહરણ: ઑપ્શનલ પેરામિટર્સ સાથે ફંક્શન

// Consider a function that generates a report with various options:

function generateReport(
    string $title,
    string $author,
    string $format = 'pdf',
    bool $includeSummary = false,
    bool $includeCharts = true
) {
    // Function body
}

// Calling with named arguments
generateReport(
    title: 'Annual Sales Report',
    author: 'Jane Smith',
    includeSummary: true,
    format: 'docx'
);

In this example, the format and includeSummary parameters are specified in a different order than their declaration, making the function call clearer and more flexible.

લિમિટેશન્સ અને કન્સિડરેશન્સ

  1. પેરામિટરનો ક્રમ: જરૂરી પેરામિટર્સને હજી પણ તે ક્રમમાં આપવાના હોય છે, જેમના પહેલાં તેઓ દેખાય છે, બલ્કે નેમડ આર્ગ્યુમેંટ્સ વિકલ્પ પેરામિટર્સના ક્રમમાં લવચીકતા આપે છે.
  2. કમ્પેટિબિલિટી: નેમડ આર્ગ્યુમેંટ્સ ફક્ત PHP 8.0 અને ત્યારબાદની સંસ્કરણોમાં જ ઉપલબ્ધ છે. તેઓ જૂના PHP વર્ઝન્સમાં કામ નહીં કરે.
  3. રીડેબિલિટી vs. વર્બોસિટી: નેમડ આર્ગ્યુમેંટ્સ રીડેબિલિટી વધારે છે, પણ જ્યાં આર્ગ્યુમેંટ્સ પહેલાથી જ સ્પષ્ટ છે, ત્યાં તેમનો વધુ ઉપયોગ કોડને વધુ વર્બોસ બનાવી શકે છે.

PHP 8.0 માં નેમડ આર્ગ્યુમેંટ્સ કોડ રીડેબિલિટી અને લવચીકતા વધારવા માટે એક ઉત્તમ ફીચર છે. તેઓ તમને પોઝિશનની જગ્યાએ નામ દ્વારા આર્ગ્યુમેંટ્સ સ્પષ્ટ કરવાની મંજૂરી આપે છે, જે ફંક્શન અને મેડથ કૉલ્સને વધુ સ્પષ્ટ અને જાળવવા માટે સરળ બનાવે છે, ખાસ કરીને તે ફંક્શન્સ માટે જેમાં ઘણા પેરામિટર્સ અથવા ઑપ્શનલ મૂલ્યો હોય.


જ્યારે તમે ઉપરોક્ત 5 ફીચર્સને અન્વેષણ અને પ્રયોગ કરી લો, પછી “Learn Remaining 5 Features” લિંક પર ક્લિક કરીને તમારા શીખવાની મુસાફરી ચાલુ રાખો. આગળ વધતા પહેલા સુનિશ્ચિત કરો કે તમે પ્રાથમિક ફીચર્સને સંપૂર્ણપણે સમજી લીધાં અને પ્રેક્ટિસ કરી. આગામી ફીચર્સ સાથે જોડાવાથી તમારું જ્ઞાન વધુ ઊંડું થશે અને તમે શીખેલ બાબતોને લાગુ કરી શકશો. વધુ મદદ માટે, સંકલ્પનાઓની સમીક્ષા કરો, જો જરૂરી હોય તો મદદ લો, અને તમારી સમજણને મજબૂત બનાવવા માટે તમારી સમજણને દસ્તાવેજિત કરો. બાકી ફીચર્સને ઍક્સેસ કરવા માટે અને તમારા શીખવાની કામગીરી આગળ વધારવા માટે લિંકનું અનુસરણ કરો.