পিএইচপি-তে কীভাবে একটি সাধারণ সার্ভার-সাইড রাউটিং সিস্টেম তৈরি করবেন।

রেকর্ড করেছেন অ্যারন সেকিসম্বু

সার্ভার-সাইড ওয়েব অ্যাপ্লিকেশনের প্রসঙ্গে, একটি রাউটিং সিস্টেমটি ওয়েব অ্যাপ্লিকেশনের অংশ যা কোনও HTTP অনুরোধকে একটি অনুরোধ হ্যান্ডলারের (ফাংশন / পদ্ধতি) অ্যাসাইন করে। একটি HTTP অনুরোধে একটি শিরোনাম এবং optionচ্ছিকভাবে একটি শরীর থাকে body শিরোনামটিতে অনুরোধ সম্পর্কিত তথ্য রয়েছে যেমন: বি। পদ্ধতি, পথ এবং হোস্ট। কিছু পদ্ধতি যেমন জিইটি, হেড এবং বিকল্পগুলি অনুরোধের বডি ব্যবহার করে না, অন্যদিকে যেমন পোস্ট, পুট এবং প্যাচ এটি ক্লায়েন্টের কাছ থেকে ডেটা সার্ভারে পাস করার জন্য ব্যবহার করে।

একটি রাউটিং সিস্টেম ব্যবহার করে আমাদের প্রতিটি অনুরোধ ফাইলে অর্পণ করার পরিবর্তে আমাদের অ্যাপ্লিকেশনটিকে আরও ভালভাবে গঠনের অনুমতি দেয়।

একটি রাউটিং সিস্টেম অনুরোধের ইউআরএলটিতে উল্লিখিত অনুরোধ পদ্ধতি এবং পাথের উপর ভিত্তি করে একটি অনুরোধ হ্যান্ডলারের কাছে একটি HTTP অনুরোধ মানচিত্র করে। এই টিউটোরিয়ালে আমরা ঠিক এটি তৈরি করতে যাচ্ছি।

প্রয়োজনীয়তা

  • আপনার বিকাশ কম্পিউটারে চলার জন্য আপনার পিএইচপি সংস্করণ 5 বা তার বেশি হতে হবে।
  • পিএইচপি এর প্রাথমিক জ্ঞান, পিএইচপি গ্লোবাল ভেরিয়েবলের সাথে পরিচিতি সহ।
  • অবজেক্ট-ওরিয়েন্টেড পিএইচপি বোঝার।

দায় অস্বীকার।

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

চল শুরু করি.

প্রকল্পের জন্য একটি ফোল্ডার তৈরি করতে টার্মিনালটি ব্যবহার করুন এবং ফোল্ডারে সিডি অনুলিপি করুন।

$ এমকেডির পিএইচপি রাউটার $ সিডি পিএইচপি রাউটার

নীচের মত ফোল্ডারে 4 টি ফাইল তৈরি করুন।

index স্পর্শ সূচক.এফপি অনুরোধ.এফপি IRequest.php রাউটার.এফপি

index.php - এটি ওয়েব অ্যাপ্লিকেশনটির জন্য এন্ট্রি ফাইল। এখানে আমরা রাউটারটি আরম্ভ করব এবং আমাদের রুটগুলি সংজ্ঞায়িত করব। এটিতে সমস্ত আমদানিও অন্তর্ভুক্ত।

রিকোয়েস্ট.এফপি - এই ফাইলটিতে এইচটিটিপি রিকোয়েস্ট সম্পর্কিত তথ্য সম্বলিত অবজেক্টটি আরম্ভ করার জন্য রিকোয়েস্ট ক্লাসের একটি ক্লাস রয়েছে।

IRequest.php: এই ফাইলটিতে অনুরোধ শ্রেণীর প্রয়োগ করা উচিত এমন ইন্টারফেস রয়েছে।

রাউটার.এফপি - এই ফাইলে রাউটার ক্লাস রয়েছে।

রাউটারটি লেখার আগে আপনাকে এর এপিআই ডিজাইন করতে হবে (অ্যাপগুলিতে ব্যবহার করুন)। নীচে আমাদের রাউটারের জন্য এপিআই রয়েছে।

$ রাউটার = নতুন রাউটার;
// জিইটি অনুরোধগুলি কীভাবে সংজ্ঞায়িত হয়
ter রাউটার-> get ('/ কিছু / রুট', ফাংশন ($ অনুরোধ) {// কলব্যাকের $ অনুরোধ আর্গুমেন্টে অনুরোধটি "সামগ্রী";}) সম্পর্কিত তথ্য রয়েছে;
// পোষ্ট অনুরোধগুলি কীভাবে সংজ্ঞায়িত করা হয় $ রাউটার-> পোস্ট ('/ কিছু / রুট', ফাংশন ($ অনুরোধ) {// আমি অনুরোধ সংস্থা থেকে কীভাবে ডেটা পাব? $ বডি = $ অনুরোধ-> গেটবডি ();}) ;

এখন যেহেতু আমরা নির্ধারণ করেছি যে কীভাবে আমাদের রাউটার ব্যবহার করা হবে, আসুন এটি তৈরি করুন।

অনুরোধ ক্লাস তৈরি করুন।

প্রথমে নির্দিষ্ট অনুরোধ শ্রেণীর দ্বারা প্রয়োগ করা ইন্টারফেসটি সংজ্ঞায়িত করুন। IRequest.php এ IRequest ইন্টারফেসটি সংজ্ঞায়িত করুন।

getBody () অনুরোধের বডি থেকে ডেটা পেয়েছে। অনুরোধ শ্রেণীর অবশ্যই এই পদ্ধতির বাস্তবায়ন থাকতে হবে।

অনুরোধ ক্লাস তৈরি করুন।

কনস্ট্রাক্টরে বুটস্ট্র্যাপসেল্ফ () কে কল করুন - এমন একটি পদ্ধতি যা বিশ্বব্যাপী অ্যারে keys _SERVER এর সমস্ত কীগুলি অনুরোধ শ্রেণীর বৈশিষ্ট্য হিসাবে সেট করে এবং তাদের মান নির্ধারণ করে। এই পদ্ধতিটি টু ক্যামেলকেস () পদ্ধতিটিকে কল করে।

টো ক্যামেলকেস () পদ্ধতিটি একটি সাপ কেস থেকে একটি উটের ক্ষেত্রে রূপান্তর করে।

getBody () হ'ল IRequest ইন্টারফেসে সংজ্ঞায়িত পদ্ধতির একটি বাস্তবায়ন।

রাউটার ক্লাস তৈরি করুন।

রাউটার.এফপি-তে, রাউটারের জন্য নিম্নলিখিত কোড যুক্ত করুন।

রাউটার বর্গ নির্মাণে, নির্ভরতার সাথে একটি রেফারেন্স রাখুন - অনুরোধ অবজেক্ট।

আসুন পিএইচপি যাদু পদ্ধতিটি __call () ব্যবহার করুন। যখন অ্যাক্সেসযোগ্য পদ্ধতিগুলিকে কোনও অবজেক্ট প্রসঙ্গে ডাকা হয় তখন এই পদ্ধতিটি ট্রিগার করা হয়।

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

আমরা গেট () পদ্ধতিটি কল করার চেষ্টা করছি, যা রাউটার শ্রেণিতে সংজ্ঞায়িত নয়, যাতে __call () যাদু পদ্ধতিটি ট্রিগার হয়। এটি দুটি যুক্তি গ্রহণ করে। প্রথম যুক্তি হ'ল পদ্ধতির নাম ('get') এবং দ্বিতীয়টি আর্গুমেন্টের একটি অ্যারে যা get () পদ্ধতিটি ['/', ফাংশন () {}] দিয়ে ডাকে।

গতিশীলভাবে একটি এসোসিয়েটিভ অ্যারে তৈরি করতে আমরা __call () যাদু পদ্ধতি ব্যবহার করি যা রুটে কলব্যাকগুলি মানচিত্র করে। আমরা প্রতিটি সমর্থিত অনুরোধ পদ্ধতির জন্য একটি তৈরি করি। যদি রাউটার অবজেক্টে কোনও অবৈধ পদ্ধতি কল করা হয়, আমরা 405 পদ্ধতিতে প্রতিক্রিয়া জানাই, এটি অনুমোদিত নয়।

সমাধান () পদ্ধতিটি একটি কলব্যাক চয়ন করে যা এইচটিটিপি পদ্ধতি এবং অনুরোধের ("/", "/ ফু / বার", ইত্যাদি) এর HTTP পাথের উপর ভিত্তি করে একটি অনুরোধ প্রক্রিয়া করার জন্য ডাকা হয়।

এখন আমাদের রাউটারটি রয়েছে তবে আমরা এটি অ্যাপ তৈরি করতে ব্যবহার করতে পারি।

একটি অ্যাপ তৈরি করুন।

অনুরোধ এবং রাউটার ক্লাস আমদানি করুন যা আমরা সূচি.এফপিতে সংজ্ঞায়িত করেছি, একটি রাউটার আরম্ভ করব এবং কয়েকটি রুট সংজ্ঞায়িত করব।

অ্যাপটি চালান এবং ম্যানুয়ালি এটি পরীক্ষা করুন।

8000 পোর্টে অ্যাপ চালাতে পিএইচপি এর বিকাশ সার্ভার ব্যবহার করুন।

টার্মিনালে, প্রকল্প ফোল্ডারে স্যুইচ করুন এবং নিম্নলিখিত কমান্ডটি চালান।

$ পিএইচপি-এস 127.0.0.1:8000

আপনার ওয়েব ব্রাউজারটি খুলুন এবং হোমপৃষ্ঠা এবং প্রোফাইল পৃষ্ঠাগুলি পরীক্ষা করতে http: // লোকালহোস্ট: 8000 / এবং http: // লোকালহস্ত: 8000 / প্রোফাইলে নেভিগেট করুন।

পোস্টম্যান বা কার্ল (বা আপনার পছন্দের কোনও সরঞ্জাম) ব্যবহার করুন http: // লোকালহোস্ট: 8000 / প্রোফাইলের পোষ্ট রুটটি পরীক্ষা করতে test

পোস্টম্যানের সাথে আমার পরীক্ষার একটি স্ক্রিনশট এখানে।

পোস্ট / ডেটা কাজমোছা / ডেটা 405 প্রদান করে। পদ্ধতি অনুমতি নেই

সর্বশেষ ভাবনা.

পিএইচপি বর্তমানে এইচটিটিপি পদ্ধতিগুলিকে সমর্থন করে না যা অনুরোধের বডিগুলিতে ডেটা প্রেরণের অনুমতি দেয় (পোষ্ট, পুট, ডিলেট, প্যাচ, ইত্যাদি)।

আপনাকে অনুরোধ বডি থেকে কাঁচা ডেটা পড়তে পিএইচপি: // ইনপুট (কেবল পঠনযোগ্য ইনপুট স্ট্রিম) ব্যবহার করতে হবে এবং তারপরে ডেটাটি কী-মান জোড়ায় ভাঙতে হবে।

আপনার কি শীর্ষ বিকাশকারীদের ভাড়া নেওয়া দরকার? এটির সাথে আপনাকে সহায়তা করতে আন্ডেলার সাথে কথা বলুন।