পিএইচপি কেন ইন্টারফেস আছে?


35

আমি লক্ষ্য করেছি যে পিএইচপি 5 হিসাবে ভাষাটিতে ইন্টারফেস যুক্ত করা হয়েছে। তবে, যেহেতু পিএইচপি খুব স্বচ্ছভাবে টাইপ করা হয় তাই মনে হয় ইন্টারফেস ব্যবহারের বেশিরভাগ সুবিধা হারাতে বসেছে। কেন এটি ভাষার অন্তর্ভুক্ত?


5
আমি মনে করি সঠিক প্রশ্ন, কেন নয়?
আলবার্তো ফার্নান্দেজ

5
কারণ তারা কোনও সুবিধা দেয় বলে মনে হচ্ছে না, তবে কেন তাদের অন্তর্ভুক্ত করবেন?
জিএসটো

4
@ হারুসকোল এবং এগুলি কার্যকর করার আগে, সেগুলি ব্যবহার করা হয়নি, সুতরাং আপনি দেখতে পারেন যে তারা কেবল কোনও সংস্করণ আগে কীভাবে অব্যবহৃত এবং অকেজো হয়ে পড়েছিল। আপনার এই দাবিটি সমর্থন করতে হবে এবং সমর্থন করতে হবে যে তাদের ব্যবহারটি কোনওভাবেই তারা কার্যকর say
রেন হেনরিচস 21

6
@ হারুসকোল মোটেও উদ্ভট নয়। হাতুড়ির মান প্রস্তাবটি দেখানো সহজ। এই প্রশ্নটি কাউকে পিএইচপি ইন্টারফেসের মান প্রস্তাব প্রদর্শনের জন্য জিজ্ঞাসা করছে, কেবল তারা বিতর্কিত উপায়ে মূল্যবান তা ঘোষণা করার জন্য নয়।
রেন হেনরিচস

3
এবং মনে রাখবেন যে ইন্টারফেসগুলি কেবল টাইপিং সম্পর্কে নয়। একটি ইন্টারফেস একটি চুক্তি যা উল্লেখ করে যে একটি বাস্তবায়নকারী শ্রেণিকে অবশ্যই এটির পদ্ধতিগুলি অন্তর্ভুক্ত করতে হবে। প্লাগইন ইঞ্জিনগুলির মতো জিনিসগুলির জন্য দরকারী।
মাইকেল

উত্তর:


30

পিএইচপি-তে ইন্টারফেসের মূল সুবিধা হ'ল ক্লাসগুলি একাধিক ইন্টারফেস প্রয়োগ করতে পারে। এটি আপনাকে এমন কয়েকটি ক্লাসগুলিতে অনুমতি দেয় যা কিছু কার্যকারিতা ভাগ করে নেয় তবে অগত্যা কোনও পিতামাতার ক্লাসটি ভাগ করে না। কিছু উদাহরণের মধ্যে ক্যাশে, আউটপুট, বা নির্দিষ্ট উপায়ে শ্রেণীর বৈশিষ্ট্য অ্যাক্সেস অন্তর্ভুক্ত থাকতে পারে।

আপনার কোডে, আপনি পরীক্ষা করতে পারেন কোনও শ্রেণি শ্রেণীর নাম পরীক্ষা করার পরিবর্তে প্রদত্ত ইন্টারফেস প্রয়োগ করে কিনা। তারপরে, নতুন ক্লাস যুক্ত হওয়ার পরে আপনার কোডটি এখনও কাজ করবে।

পিএইচপি কিছু পূর্বনির্ধারিত ইন্টারফেস সরবরাহ করে যা বিভিন্ন পরিস্থিতিতে কার্যকর হতে পারে: http://php.net/manual/en/reided.interfaces.php

সম্পাদনা - একটি উদাহরণ যুক্ত করা

আপনার যদি মাইন্টারফেস নামের একটি ইন্টারফেস থাকে এবং আপনি বিভিন্ন শ্রেণীর একাধিক অবজেক্টের সাথে কাজ করছেন যা কিছু কার্যকারিতা ভাগ করে নিতে পারে বা নাও করতে পারে, ইন্টারফেস আপনাকে এ জাতীয় কিছু করার অনুমতি দেয়:

// Assume $objects is an array of instances of various classes
foreach($objects as $obj) {
 if($obj instanceof MyInterface) {
     $obj->a();
     $obj->b();
     $obj->c();
   }
}

23
অন্য কথায়: "আপনি ডায়নামিক-
টাইপযুক্ত

11
@ কামিল, আমি এটিকে আরও অবিচ্ছিন্নভাবে ভুগতে না চাইলে স্থিতিশীল টাইপিংয়ের সুবিধাগুলি গ্রহণ করতে সক্ষম বলে মনে করি।
কার্ল বিলেফেল্ট

9
তুমি কি সিরিয়াস? উদাহরণস্বরুপ? যদি-তারপর-যদি-তারপর-যদি-তারপর-সর্বকালের হয়, তবে এটি পরিচিত বলে মনে হচ্ছে না? আহ, হ্যাঁ, পদ্ধতিগত প্রোগ্রামিং।
কামিল টমোক

23
@ কমিল টোমাক পিএইচপি-র ভাষাতে অপ্রত্যাশিত লোকদের চেয়ে বরং এটি অপ্রত্যাশিতভাবে ব্যবহার করে। পিএইচপি-তে সম্পূর্ণ অবজেক্ট-ভিত্তিক প্রোগ্রামিংয়ের সমস্ত সরঞ্জাম রয়েছে has আপনি সেগুলি ব্যবহার করেন বা না করেন তা প্রোগ্রামারের উপর নির্ভর করে। তদ্ব্যতীত, প্রক্রিয়াগত প্রোগ্রামিং এবং নিজের মধ্যে কোনও সমস্যা নেই।
পদ্ম নোট

18
@ কামিল - কতটা অদ্ভুত, আপনার মন্তব্য পড়ে কেউ এই সিদ্ধান্তে পৌঁছতে পারে যে ওওপিতে কোনও ইফ-এস নেই এবং কোনওভাবে যাদুতে - জিনিসগুলি কাজ করতে পারে। কি দারুন.
মাইকেল জেভি

23

পিএইচপি খুব শিথিলভাবে টাইপ করা হয় তবে পদ্ধতি পরামিতিগুলির মতো বিষয় সম্পর্কে এটি দৃ strongly়ভাবে টাইপ করা যেতে পারে।

নিম্নলিখিত উদাহরণ বিবেচনা করুন:

interface Car { function go(); }

class Porsche { function go() {} }

function drive(Car $car) {}

$porsche = new Porsche();

drive($porsche);

উপরের কোডটি আউটপুট দেবে:

আর্গুমেন্ট 1 ড্রাইভে পাস করেছে () অবশ্যই ইন্টারফেস কার প্রয়োগ করতে হবে, দেওয়া পোর্শের উদাহরণ


1
অবশ্যই, এটি খুব খারাপ। nullযদিও প্যারামিটারের জন্য আপনার ডিফল্ট মান থাকতে পারে ।
ইমানুয়েল রুসেভ

5
তবে যদি driveএকটি দরকার হয় Car, তবে nullযাইহোক যাইহোক কোনওভাবে উপকারী হবে না ...
হুরাসকোল

7
কখনও নাল পাস করবেন না। একটি "বিশেষ কেস" অবজেক্ট (মার্টিন ফোলারের ব্যাখ্যার জন্য গুগল) ব্যবহার করুন।
মার্টিন ব্লোর

2
@ রেনিসিস আপনি যদি ডিফল্ট মানটিকে নালার জন্য সেট করেন তবে আপনি নালকে ইঙ্গিতপ্রাপ্ত পদ্ধতিতে টাইপ করতে পারেন। (CAR $ car = নাল) আপনাকে আর্গুমেন্ট হিসাবে নাল দিয়ে এই পদ্ধতিটি কল করার অনুমতি দেবে। এটি তবে একটি দুর্দান্ত বোকা অনুশীলন হবে। কেন পৃথিবীতে আপনি এটি করতে সক্ষম হবেন?
dqhendrick

2
কংক্রিট উদাহরণ: function addView($name, Template $template, SecurityMode $securityMode = null, $methodName = null);আপনার একটি $methodNameকিন্তু নাও থাকতে পারে $securityMode
নিকোল

7

ইন্টারফেসগুলি আপনাকে ওপেন-ক্লোজড নীতিটি বাস্তবায়িত করতে, আলগাভাবে কাপল কোড বেস বজায় রাখতে এবং অনেকগুলি ওওপি নকশার নিদর্শনগুলি বাস্তবায়নের অনুমতি দেয়।

উদাহরণস্বরূপ, যদি একটি শ্রেণি অন্য শ্রেণিকে আর্গুমেন্ট হিসাবে গ্রহণ করে:

class A {

    public function __construct(B $class_b) {
        // use class b
        $class_b->run();
    }
}

আপনার ক্লাস ‘এ’ এবং ‘বি’ শ্রেণিতে এখন আঁটসাঁটো মিলন রয়েছে, এবং ক্লাস ‘এ’ বি বাদে অন্য কোনও শ্রেণি ব্যবহার করতে পারে না ইঙ্গিতটি প্রকারটি নিশ্চিত করে যে আপনার পক্ষে সঠিক ধরণের যুক্তি রয়েছে, তবে এখন এ এবং বিয়ের সম্পর্ককে সীমাবদ্ধ করেছে mented

বলুন যে আপনি ক্লাস এ চান তবে রান () পদ্ধতি আছে এমন সমস্ত ধরণের ক্লাস ব্যবহার করতে সক্ষম হতে চান। এটি মূলত (তবে বেশ নয়) কম্যান্ড ডিজাইনের প্যাটার্ন। সমাধানের জন্য, আপনি একটি কংক্রিট শ্রেণীর পরিবর্তে ইন্টারফেস ব্যবহার করে ইঙ্গিতটি টাইপ করবেন। বি তাদের সেই ইন্টারফেসটি বাস্তবায়ন করবে এবং ক্লাস এ এর ​​আর্গুমেন্ট হিসাবে স্বীকৃত হবে This এভাবে ক্লাস এ যে কোনও শ্রেণি গ্রহণ করতে পারে যা সেই ইন্টারফেসটিকে তার নির্মাণকারীর পক্ষে আর্গুমেন্ট হিসাবে ব্যবহার করে।

এই ধরণের কোডিংটি বেশিরভাগ ওওপি ডিজাইনের নিদর্শনগুলিতে ব্যবহৃত হয় এবং পরবর্তী সময়ে কোডের অনেক সহজ পরিবর্তনের জন্য অনুমতি দেয়। এগুলি এজিআইএল প্রোগ্রামিংয়ের মৌলিক অংশগুলির of


1
বা বি এর যে কোনও সাবক্লাস
মেজ

7

@ পিজেস্কেপটিকের একটি ভাল উত্তর রয়েছে , এবং @ কমিল টোমকের সেই উত্তর সম্পর্কে একটি ভাল মন্তব্য রয়েছে।

পিএইচপি এর মতো গতিময় টাইপ করা ভাষা সম্পর্কে দুর্দান্ত বিষয় হ'ল আপনি অবজেক্টগুলিতে পদ্ধতি ব্যবহার করার চেষ্টা করতে পারেন এবং পদ্ধতিটি না থাকলে এটি আপনাকে চিৎকার করবে না।

পিএইচপি-র মতো গতিসম্পন্ন টাইপযুক্ত ভাষার সমস্যাটি হ'ল আপনি বস্তুগুলিতে পদ্ধতিগুলি ব্যবহার করার চেষ্টা করতে পারেন এবং পদ্ধতিটি না থাকলে এটি আপনাকে চিৎকার করবে।

ইন্টারফেসগুলি একটি অজানা বস্তুর কল করার পদ্ধতিগুলি এবং পদ্ধতিগুলি রয়েছে কিনা তা নিশ্চিত হওয়ার সুবিধাজনক উপায় যুক্ত করে (এটি যে তারা প্রয়োজনীয়ভাবে সঠিক বা কাজ করতে যাচ্ছে না)। এটি কোনও ভাষার প্রয়োজনীয় অংশ নয়, তবে কোডিং আরও সুবিধাজনক করে তোলে। এটি দৃ strongly়ভাবে টাইপযুক্ত ওওপি বিকাশকারীকে দৃ strongly়ভাবে টাইপযুক্ত পিএইচপি কোড লেখার অনুমতি দেয়, যা পরে কোনও পৃথক পিএইচপি বিকাশকারী দ্বারা লিখিতভাবে আলগা টাইপ করা পিএইচপি কোডের পাশাপাশি কাজ করতে পারে।

যেমন একটি ফাংশন:

foo( IBar $bar )
{
  $baz = $bar->baz();
  ...
}

এর চেয়ে বেশি সুবিধাজনক:

foo( $bar )
{
  if ( method_exists( $bar, 'baz' ) )
  {
    $baz = $bar->baz();
  }
  else
  {
    throw new Exception('OMGWTF NO BAZ IN BAR!');
  }
  ...
}

এবং আইএমএইচও সহজ, পঠনযোগ্য কোড হ'ল আরও ভাল কোড।


1
পরিবর্তে আপনি যা করেন তা কেবল পদ্ধতিটি পরীক্ষা করা নয় এবং যখন কেউ আপনার ফাংশনটিকে ভুল ডেটা দিয়ে কল করে তখন ক্র্যাশ এবং বার্ন হয়। যদি কেউ আপনার ফাংশনটি ভুল ব্যবহার করে তবে এটি আপনার সমস্যা নয়।
রায়নস

ঠিক না - আপনার উদাহরণটি যে কারওর জন্য "ডক" যেমন প্রক্সি, অ্যাডাপ্টার,
ডেকরেটার

1
@Kamil? কেমন করে. একটি প্রক্সি এমন কোনও কিছুর জন্য মোড়কের ক্লাস হবে যা ইন্টারফেসটিকে এই ফাংশনটির সাথে ব্যবহার করার অনুমতি দেয় না implement
টাইলারম্যাক

__call () ব্যবহার করে @tylermac ডায়নামিক প্রক্সি - এবং যদি __call কেবলমাত্র পদ্ধতি হয় তবে এটি কেবল আইবার বাস্তবায়ন করতে পারে না, যার অর্থ আপনি এটিকে Foo (IBar $ বার) এ পাস করতে পারবেন না
কামিল তোমাক

5

আপনি যদি হাঁস-টাইপার ব্যবহার করেন তবে তারা সম্পূর্ণরূপে অকেজো, আপনি যখন হাঁস-টাইপিং করেন তখন লাইব্রেরি / ফ্রেমওয়ার্কের সাথে কাজ করা বেশ বিরক্তিকর যা কোনও টাইপ-হিন্টিং ব্যবহার করে।

এটি সব ধরণের গতিশীল মেটা-প্রোগ্রামিং (যাদু পদ্ধতি) এর জন্যও প্রযোজ্য।


3

পিএইচপি হয় না ঢিলেঢালাভাবে বা দৃঢ়ভাবে কিন্তু পরিবর্তনশীল টাইপ করা

ইন্টারফেস সম্পর্কে, আপনার নিজেকে প্রথমে জিজ্ঞাসা করা উচিত: ইন্টারফেসের বেশিরভাগ সুবিধা কী কী?

ওওপি-তে, ইন্টারফেসগুলি কেবলমাত্র ধরণের সম্পর্কে নয়, আচরণগতভাবেও হয়।

যেহেতু পিএইচপি-তেও একটি প্রকারের ইঙ্গিত বৈশিষ্ট্য রয়েছে , আপনি জাভা হিসাবে খাঁটি oo ভাষায় যেমন ইন্টারফেস ব্যবহার করতে পারেন।

interface File
{
    public function getLines();
}

CSVFile implements File
{
    public function getLines()
    {}
}

XMLFile implements File 
{
    public function getLines()
    {}
}

JSONFile implements File 
{
    public function getLines()
    {}
}

class FileReader
{
    public function read(File $file)
    {
        foreach($file->getLines() as $line)
        {
            // do something
        }
    }
}

পিএইচপি ইন্টারফেস প্রয়োগের সাথে সাথে, আপনি পিএইচপিউনিট ব্যবহার করে বিমূর্ত ক্লাসগুলির জন্য মক তৈরি করতে পারেন - এবং এটি একটি বৈশিষ্ট্যের নরক:

public function testSomething()
{
    $mock = $this->getMockForAbstractClass('File');

    $mock->expects($this->once())
         ->method('getLines')
         ->will($this->returnValue(array()));

    // do your assertions
}

সুতরাং, মূলত, ভাষা বৈশিষ্ট্যগুলি ব্যবহার করে আপনার পিএইচপিতে একটি সলিড সামঞ্জস্যপূর্ণ অ্যাপ্লিকেশন থাকতে পারে , যার মধ্যে একটি ইন্টারফেস।


0

ইন্টারফেসগুলি নির্ভরতার ইনজেকশনের জন্য কংক্রিটের চেয়ে অনেক বেশি কার্যকর। খোলামেলা উদাহরণ হিসাবে:

interface Istore { 
  public function save(); 
}

class Article_DB implements Istore 
{ 
  public function save($data) 
  {
    // do save to format needed.
  } 
}

class Article
{
   private $content;

   public function content($content)
   {
     $this->content = $content;
   }

   public function save(Istore $store)
   {
     $store->save($this->content);
   }
}

$article = new Article();
$article->content('Some content');

$store = new Article_DB();
$article->save($store);

এখন বলুন যদি আপনার প্রয়োজনীয়তা পরিবর্তন হয় এবং আপনি কোনও পিডিএফ সংরক্ষণ করতে চান। আপনি নিবন্ধ ক্লাসকে দূষিত করার পরিবর্তে সেই উদ্দেশ্যে একটি নতুন ক্লাস তৈরি করতে পারেন।

class Article_PDF implements Istore 
{ 
  public function save($data) 
  {
    // do save to format needed.
  } 
}


$article = new Article();
$article->content('Some content');

$store = new Article_PDF();
$article->save($store);

আর্টিক্যাল ক্লাসে এখন একটি চুক্তি রয়েছে যা ক্লাসগুলি সেভ করতে ব্যবহার করে অবশ্যই Istore ইন্টারফেস প্রয়োগ করতে হবে। এটি কোথায় সংরক্ষণ করে বা কীভাবে এটি সংরক্ষণ করে তা বিবেচ্য নয়।


-1

আপনি "জাল" রিয়েল অবজেক্টগুলি সরবরাহ করতে পারেন যা ইন্টারফেস প্রয়োগ করে। এরপরে আপনি প্রকৃত সার্ভার, ফাইল সিস্টেম, সকেট, ডাটাবেস ইত্যাদির প্রয়োজন ছাড়াই আপনার কোডের একটি অংশকে পরীক্ষা করতে পারেন


-3

প্রচুর লোক সম্ভবত এইভাবে উত্তর দেওয়ার জন্য আমাকে ঘৃণা করবে তবে আপনার টাইপিং সমস্যার সমাধান পিএইচপি দিয়ে খুব সহজেই ঠিক করা যেতে পারে। হ্যাঁ পিএইচপি খুব শিথিলভাবে টাইপ করা হয় তাই টাইপগুলি ডিফল্টরূপে ধরে নেওয়া হয়, যা কিছু সমস্যা তৈরি করতে পারে, বিশেষত তুলনামূলক ক্রিয়ায় যা এটির সাথে বেশিরভাগ মানুষের সমস্যা problem বলা হচ্ছে, পিএইচপি কোনও জোরালোভাবে টাইপিত ভাষার মতোই কঠোর হতে পারে যদি আপনি যা প্রয়োজন তার মধ্যে যেটি ব্যবহার করছেন তা castালাই করুন এবং তারপরে বিটওয়াইজ তুলনা অপারেটরগুলি ব্যবহার করুন। আমি যা বলছি তার সম্পর্কে আমি এখানে সবচেয়ে সহজ উদাহরণটি বলতে পারি:

$ myVar = (অন্তর্) 0; ; myOtherVar = '0';

তুলনা করা ($ myVar == $ myVar) সমান (বুল) সত্য হবে

তবে তুলনা করা ($ myVar === $ myVar) অন্য কোনও "টাইপড" তুলনার মতো মিথ্যা (মুল) মিথ্যা হবে

আমি সত্যিই কামনা করি যে বিকাশকারীরা এই বিষয়গুলি নিয়ে বিতর্ক বন্ধ করে দেবেন, যদি আপনার পিএইচপি কাজ করার পদ্ধতিতে জাভাতে প্রোগ্রাম যায় এবং বাঁচতে দেয় বা জীবনযাপন করতে পারে বা আপনি যা চান তা এটি করবে এমনভাবে ব্যবহার করে .. এটি সম্পর্কে তাত্পর্যপূর্ণভাবে কীভাবে আপনার পক্ষে ভাল হয়? সারাদিন ঘুরে দাঁড়ানোর একটা অজুহাত দিবেন? আপনি অন্য কারও চেয়ে ভাল দেখাচ্ছে? আচ্ছা এটি দুর্দান্ত যে আপনি নিজের সম্পর্কে এত উচ্চমান বোধ করছেন যে আপনি অন্য কাউকে খারাপ দেখাতে ইচ্ছুক কিন্তু বাস্তবে এটি আপনার পছন্দ এবং যে কারও উপর আপনার বিশ্বাসকে জোর করে চাপিয়ে দেওয়ার কারণে তারা কেবল তিনটি বিষয় ঘটাতে স্বাচ্ছন্দ্য বোধ না করে এমনভাবে কোড তৈরি করে:

1) তারা আপনার পথটিকে কোড করবে তবে আপনার মানদণ্ড অনুসারে "অগোছালো" (মনে করুন, আপনি কি কখনও কোনও জাভা প্রোগ্রামারকে তাদের প্রথম পিএইচপি প্রোগ্রাম তৈরি করতে দেখেছেন বা এর বিপরীতে? এটি তাদের পদ্ধতি পরিবর্তন করতে পারে বা আরও খারাপ হতে পারে))

2) আপনি whine সম্পর্কে অন্য কিছু পাবেন

3) সম্ভবত তাদের উত্পাদন করতে বেশি সময় লাগবে। এবং এটি সম্ভবত আপনাকে স্বল্প মেয়াদে আরও ভাল দেখায়, তবে সামগ্রিকভাবে দলটি এর জন্য আরও খারাপ দেখবে (মনে রাখবেন আপনি অন্য কারও চেয়ে ধীর গতিতে দেখবেন এবং যতক্ষণ না টিম যুক্তিসঙ্গত সময়সীমার মধ্যে ডেলিভারিযোগ্যগুলি পূরণ করে ততক্ষণ খারাপ নয়) তবে যিনি সাধারণত কিছুটা দ্রুত সঞ্চালন করেছেন তার প্রতি আপনার অভ্যাস জোর করে ফেললে আপনার পুরো দলটি এভাবে ধীর হয়ে যায়, খুব দাবিদার ওয়ার্কফ্লোতে আরও খারাপ দেখাবে)

আমি ব্যক্তিগতভাবে প্রসেসরাল পিএইচপি কোডটি লেখার পক্ষে পছন্দ করি যদিও আমি কয়েকটি পৃথক ভাষায় ওওপি ব্যবহার করে সম্পূর্ণ প্রোগ্রাম লিখে এবং করতে পারি। বলা হচ্ছে, আমি ভাল ওওপি কোড এবং খারাপ ওওপি কোড এবং সেই বিষয়ে ভাল প্রসেসালাল কোড এবং খারাপ পদ্ধতিগত কোড দেখেছি ... এর অনুশীলনের সাথে আসলে কিছুই করার নেই, তবে আপনি যে অভ্যাসগুলি ব্যবহার করেন এবং তারপরেও, অনেক কিছুই আমার ব্যাখ্যা অনুভূতি ... এর অর্থ এই নয় যে আমি সেই বিকাশকারীদের সম্পর্কে খারাপ কথা বলতে যাচ্ছি বা "আমার উপায় সেরা" বিএসের সাথে দাম্ভিক কথা বলতে যাচ্ছি, এটি আমার পক্ষে ঠিক, এবং আমি যে সংস্থার জন্য কাজ করি তা সুন্দর। আমার কাজ নিয়ে খুশি এবং আমি এতে গর্বিত। একটি স্ট্যান্ডার্ড প্রতিষ্ঠিত হওয়ার কারণ রয়েছে তবে আপনি যে স্ট্যান্ডার্ডটি চয়ন করেছেন তার মধ্যে যা অন্তর্ভুক্ত করা হয়েছে তা অত্যন্ত গুরুত্বপূর্ণ ... আমাকে আমার বুক থেকে নামিয়ে দেওয়ার জন্য ধন্যবাদ Thanks দিন শুভ হোক.


-4
  1. ইন্টারফেসগুলি ওওপি দৃষ্টান্তের একটি অংশ। সুতরাং যখন আপনি অবজেক্ট ভিত্তিক অংশগুলি বা আপনার সিস্টেম তৈরি করার চেষ্টা করছেন তখন এটি অনেক ক্ষেত্রে কার্যকর।
  2. So. কেন না? ;-)

উদাহরণ: আপনার ডেটা ক্যাশে করা দরকার। কিভাবে? ক্যাচিংয়ের জন্য প্রচুর আলাদা ইঞ্জিন রয়েছে, কোনটি সেরা? আপনার কী বিমূর্ত স্তর রয়েছে যার কী কী, পাওয়া, রাখা, পরিষ্কার ইত্যাদি পদ্ধতিগুলির সেট সহ কিছু আইচি ক্যাড্রাইভার ইন্টারফেস রয়েছে কেবলমাত্র বর্তমান প্রকল্পে আপনার যা প্রয়োজন তা এটি প্রয়োগ করুন এবং যখন আপনার অন্য প্রয়োজন হবে তখন এটি পরিবর্তন করুন। অথবা টোস্ট্রিংয়ের সহজ ব্যবহার। আপনার কাছে বিভিন্ন প্রদর্শনযোগ্য অবজেক্টের একটি সেট রয়েছে। আপনি কেবল স্ট্রিংয়েবল ইন্টারফেস প্রয়োগ করেছেন (যা স্ট্রিং পদ্ধতি বর্ণনা করে [পিএইচপি-তে আসলে এর মতো কোনও ইন্টারফেস নেই, তবে উদাহরণস্বরূপ]) এবং কেবলমাত্র আপনার স্ট্রিংয়ের (স্ট্রিং) withজেক্টের সাথে ইন্টারঅ্যাক্ট করে। এ 1 এর পরিবর্তে (সত্য) {কেস $ isজেট: "কর 1" এর পরিবর্তে আপনাকে যা করতে হবে তা সব আছে; বিরতি; ...

সহজ। সুতরাং "কেন?" কোনও প্রশ্ন নেই। "এটি কীভাবে আরও ভালভাবে ব্যবহার করবেন?" ;-) শুভকামনা।


-5

আমার ধারণা.

পিএইচপি অনেক এন্ট্রি লেভেলের প্রোগ্রামাররা ব্যবহার করে , এন্ট্রি লেভেলের প্রোগ্রামারদের কলেজে জাভা শেখানো হয়।

তাদের প্রোগ্রামিং ১০১ কোর্সের পরে তারা জেন্ডকে কড়া নাড়তে শুরু করে তারা জাভা বৈশিষ্ট্য চায় কারণ এগুলি তাদের নিজের শর্তে (বা হাঁসের টাইপিং বোঝার) উপর চিন্তা করা কঠিন, যখন আপনি কেবল ২০ বছর বয়সী।

জেনড বাস্তববাদী, তারা ঠিক যেখানে ডানদিকে ভান করা ছাড়া এটি বৈশিষ্ট্য যুক্ত করা আরও সহজ
এটি আরও ব্যবহারকারীদের ছেড়ে দেওয়ার পরিবর্তে ক্রয় করে, তাই এটি অবশ্যই ভাল।

এই প্রক্রিয়ার আর একটি উদাহরণ? নেট এবং জাভা কোর্সের বাইরে থাকা লোকেরাও ফাউন্ডেশন ক্লাসের ফ্রেমওয়ার্ক চায় , জেনড ফ্রেমওয়ার্কটি বের না করা পর্যন্ত তারা এগুলি নিয়ে ব্যস্ত থাকে । এটি আরও বেশি ব্যবহারকারীদের কেনে। হতেই লাগলো...

(পিএইচপি দলের একমাত্র ভাষার বৈশিষ্ট্যটি বছরের পর বছর ধরে লড়াই করেছে বলে জানা যায় goto)


আমার দৃষ্টিভঙ্গিতে PHP12সম্ভবত বিশ্বের সমস্ত সিনট্যাক্স বৈশিষ্ট্য থাকবে (আমি আশা করি এটি একটি বিমূর্ত স্তর রানটাইম পাবেন না, শক্ত, এটিই পার্লকে মেরেছিল) ফাংশনাল এবং ডেটাটাইপ দৃষ্টান্তের জন্য একটি পলক দিয়ে, এবং এখনও নেই goto
জেডজেআর

"এটি কঠিন, যখন আপনি কেবলমাত্র 20" এই ধারণাগুলির কোনও বোঝার সাথে বয়সের কীভাবে কোনও কিছু থাকতে পারে?
এভিকাটোস

@ এভিকাটোস উচ্চ বিদ্যালয়ের বাছাই-করা প্রোগ্রাম, তবে তাদের সাধারণত খারাপ শিক্ষক, নামকরণের নিয়মিত সম্মেলন থাকে এবং অবিস্মরণীয় ব্লব তৈরি হয়। তারা প্রোগ্রাম শিখতে অধিকার কলেজ শুরু করার সময়ে, এটা পেতে যাচ্ছে বছর দুয়েক লাগে। তারপরে তারা শক্ত-টাইপযুক্ত, শিল্প-আশীর্বাদযুক্ত, শ্রাদ্ধ-প্রশংসিত, যে ভাষাগুলি তাদের প্রথম বছরগুলিতে শেখানো হয়েছিল, সেগুলি থেকে আলাদা করা শুরু করে এবং আরও বাস্তববাদী, হাঁস-টাইপের, তাদের দিকে ফিরে যায়। আমি বিশ্বাস করি এটি একটি বুশিডো অনেকগুলি প্রোগ্রামার শেয়ার করে। আবার, এটি আপনার অভিজ্ঞতার প্রতিফলন নাও করতে পারে, আপনি স্ব-শিক্ষিত সাধু হতে পারেন। যদি তা হয় তবে আমাদের উপায়টি দেখান।
জেডজেআর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.