পিএইচপি-তে "অন্তর্ভুক্ত" এবং "প্রয়োজনীয়" এর মধ্যে পার্থক্য


174

তাদের মধ্যে কি কোনও পার্থক্য আছে? তাদের ব্যবহার পছন্দসই বিষয়? একে অপরের উপর ব্যবহার করে কি কোনও সুবিধা পাওয়া যায়? সুরক্ষার জন্য কোনটি ভাল?



3
সর্বদা "প্রয়োজনীয়" ব্যবহার করুন। "অন্তর্ভুক্ত" একটি সৌর মধ্যে বৈদ্যুতিক দরজা হিসাবে সুবিধাজনক।
মার্কো মারিয়ানা

2
স্থাপিত টুইট এটি সম্ভবত পরিষ্কার, আমি কেবল এটি দেখছি না। সম্ভবত বাষ্প?
অস্টিন বার্ক

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

উত্তর:


148

আপনি খুঁজে পেতে পার্থক্য বিস্তারিত পিএইচপি ম্যানুয়াল ব্যাখ্যা পৃষ্ঠায়require :

requireincludeব্যর্থতা ব্যতীত এটির মতোই এটি মারাত্মক E_COMPILE_ERRORস্তরের ত্রুটি তৈরি করবে । অন্য কথায় এটি স্ক্রিপ্টটি থামিয়ে দেবে যেখানে অন্তর্ভুক্ত রয়েছে কেবলমাত্র একটি সতর্কতা ( E_WARNING) যা এই স্ক্রিপ্টটি চালিয়ে যেতে দেয়।

উদাহরণের জন্য @ এফ্রিটজের উত্তর দেখুন


6
tiposaurus.co.uk/2011/04/04/… "প্রয়োজন () এবং অন্তর্ভুক্ত () এর মধ্যে মূল পার্থক্যটি হ'ল যদি আপনার () প্রয়োজন হয় এমন কোনও ফাইল যা লোড করা যায় না (উদাহরণস্বরূপ এটি সেখানে না থাকে) তবে এটি মারাত্মক ত্রুটি সৃষ্টি করে যা পৃষ্ঠার সম্পাদন পুরোপুরি বন্ধ করে দেবে, এবং আর কোনও আউটপুট উত্পন্ন হবে না অন্যদিকে, আপনি যদি () লোড করা যায় না এমন একটি ফাইল অন্তর্ভুক্ত করেন তবে এটি কেবল একটি সতর্কতা উত্পন্ন করবে এবং পৃষ্ঠাটি তৈরি করা চালিয়ে যান "
59

3
"আপনার যা ব্যবহার করা উচিত তা পরিস্থিতিটির উপর নির্ভর করে; প্রয়োজনীয় পৃষ্ঠাটি বাকী পৃষ্ঠার জন্য প্রয়োজনীয় ফাইলগুলি লোড করার জন্য সবচেয়ে উপযুক্ত - উদাহরণস্বরূপ আপনার যদি কোনও ডাটাবেস চালিত ওয়েবসাইট থাকে তবে প্রয়োজনীয় () ব্যবহার করে একটি ফাইল অন্তর্ভুক্ত করতে হবে () অন্তর্ভুক্ত () অন্তর্ভুক্ত ব্যবহারের চেয়ে ডেটাবেস লগইন এবং পাসওয়ার্ডকে স্পষ্টভাবে পছন্দ করা হয়।
শেভি

3
<?php if (isset($flibbertygibbet)) require 'file.php';এই উত্তরটি সম্পূর্ণ ভুল বলে মনে হচ্ছে। অন্যথায়, শর্তটি সত্য না হলেও আমার একটি মারাত্মক ত্রুটি হওয়া উচিত। straceএমনকি পিএইচপি এমনকি স্পর্শ করার চেষ্টা করছে না file.php
সিএওও

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

1
এই সমস্ত মন্তব্যগুলি সম্পাদনার আগে এই উত্তরটির মূল সংস্করণটিকে উল্লেখ করছে। মূলত এখানে একটি অবৈধ দাবি ছিল, দাবি করে যে if (false) require 'file.php';'ফাইল.এফপি' লোড হতে পারে (তবে কার্যকর করা হয়নি)। টিএলডিআর এই সমস্ত মন্তব্যকে উপেক্ষা করে।
কেভিন হুইলার

181

requireযদি ফাইলটি লোড করা না যায় তবে একটি পিএইচপি মারাত্মক ত্রুটি ফেলবে। (ফাঁসি কার্যকর)

includeযদি ফাইলটি লোড করা না যায় তবে একটি সতর্কতা তৈরি করে। (ফাঁসি কার্যকর)

এখানে অন্তর্ভুক্ত এবং পার্থক্যটির একটি দুর্দান্ত চিত্রণ রয়েছে :

এখানে চিত্র বর্ণনা লিখুন

থেকে: পার্থক্য বনাম প্রয়োজন পিএইচপি অন্তর্ভুক্ত (রবার্ট; নভেম্বর 2012 দ্বারা)


2
লিঙ্কটি নষ্ট হয়ে গেছে
মাইকেল পিটার

5

ব্যবহার include জন্য স্ক্রিপ্টের ফাইল লোড (ক্ষেত্রে এটি বিদ্যমান নয় ইত্যাদি) ছাড়া অব্যাহত কিছু মনে না করেন যদি এবং আপনি (যদিও আপনি উচিত নয়) একটি সতর্কবার্তা ত্রুটি বার্তা সঙ্গে লাইভ প্রদর্শিত হচ্ছে পারবেন না।

এর requireঅর্থ হ'ল আপনার স্ক্রিপ্টটি যদি নির্দিষ্ট ফাইলটি লোড করতে না পারে এবং একটি মারাত্মক ত্রুটি ছুঁড়ে দেয় তবে এটি বন্ধ হয়ে যাবে।


2

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

  // Example 1.
  // users see a standard php error message or a blank screen
  // depending on your display_errors setting
  require 'not_there'; 


  // Example 2.
  // users see a meaningful error message
  try {
      include 'not_there';
  } catch(Exception $e) {
     echo "something strange happened!";
  }

এনবি: উদাহরণস্বরূপ 2 টি কাজ করার জন্য আপনাকে এখানে বর্ণিত হিসাবে একটি ত্রুটি-থেকে-ব্যতিক্রম হ্যান্ডলার ইনস্টল করতে হবে http://www.php.net/manual/en/class.errorexception.php

  function exception_error_handler($errno, $errstr, $errfile, $errline ) {
     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
  }
  set_error_handler("exception_error_handler");   

অন্তর্ভুক্তি স্তরে শেখার জন্য যে জায়গাটি আপনি আশা করছেন তা সেখানে নেই great আপনার উদাহরণের কোনও সমস্যাই আপনার ওয়েবসাইট দর্শকদের বন্ধ করা নয়।
Kzqai

0
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>

কোড সহ একটি খুব সাধারণ ব্যবহারিক উদাহরণ। প্রথম প্রতিধ্বনি প্রদর্শিত হবে। আপনি ব্যবহার করেন না কেন তা অন্তর্ভুক্ত বা প্রয়োজনীয় কারণ এর রানগুলি আগে অন্তর্ভুক্ত বা প্রয়োজনীয়।

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

আপনি ব্যবহার করেন তাহলে প্রয়োজন দ্বিতীয় প্রতিধ্বনি চালানো হবে না কিন্তু যদি আপনি ব্যবহার অন্তর্ভুক্ত ব্যাপার না কি ত্রুটি আসে আপনিও দ্বিতীয় প্রতিধ্বনি ফল দেখতে হবে।


-2

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


উত্তরগুলির 2/3 ইতিমধ্যে যা বলেছে তার পুনরাবৃত্তি করার জন্য আপনার কি সত্যিই একটি 2/2 বছরের পুরানো প্রশ্ন ঘাটতে হয়েছিল ...?
সিএওও

4
ও, সে নবাগত! সম্ভবত এসও এর ধারণাটি এখনও বুঝতে পারে না।
ড্যান হ্যানলি

দরিদ্র ব্যবহারকারী 2069222, এখন তিনি এসও ছাড়লেন: '(
জাগ্রত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.