যদি ফাংশন_অস্তিত্ব থাকে তবে কেন ব্যবহার করবেন?


30

আমি ওয়ার্ডপ্রেস থিম ডেভেলপারদের অনেক লক্ষ্য করেছি এই ব্যবহার করেন থিমের functions.php

if (function_exists('register_nav_menus')) {
    register_nav_menus (array('primary' => 'Header Navigation'));
}

আমার জন্য, আমি alwayse প্রতি ফাংশন আমি ব্যবহার করছি ব্যবহারের ADD_ACTION থিমের functions.php

সুতরাং, উপরোক্ত হিসাবে লিখিত হবে:

add_action('init', 'my_register_nav_menus');

function my_register_nav_menus() {
    register_nav_menus (array('primary' => 'Header Navigation'));
}

আমার দুটি প্রশ্ন আছে:

  1. কেন প্রথম পদ্ধতিতে যদি বিবৃতিটি ব্যবহার করেন?

  2. কোনটি সঠিক উপায়?

উত্তর:


35

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

সুতরাং আপনি যদি দেখেন if ( function_exists( 'register_nav_menus' ) )থিম লেখক 3.0 এর আগের সংস্করণগুলিকে সমর্থন করছেন।

আপনি এখনও মাঝে মাঝে দেখেন if ( function_exists( 'dynamic_sidebar' ) )কেন? আমি আপনাকে বলতে পারিনি কারণ ডায়নামিক_সাইডবারটি ২.২-এ চালু হয়েছিল।

এটি ব্যবহারের আর একটি কারণ হ'ল আপনার থিম বা প্লাগইন প্লাগযোগ্যযোগ্য। প্লাগযোগ্য ফাংশনটি হ'ল চাইল্ড থিম বা অন্য কোনও প্লাগইনে ওভাররাইড করা যায়।

এটি সংজ্ঞায়িত হয়ে গেছে কল নয় এবং আপনি এটি ব্যবহার করুন! আপনি এটি সংজ্ঞায়িত করার আগে এটি ইতিমধ্যে বিদ্যমান নেই তা নিশ্চিত করার জন্য অপারেটর।

if ( ! function_exists( 'my_awesome_function' ) ) {
/**
 * My Awesome function is awesome
 *
 * @param array $args
 * @return array
 */
function my_awesome_function( $args ) {
  //function stuff
  return array();
  }
}

যখন এটি সম্পন্ন করা হয় তখন একটি চাইল্ড থিম বা অন্য প্লাগইন সেখানে সেই নিজস্ব ফাংশনটি ওভাররাইড করতে পারে।


9

function_existsফাংশন মত ফাংশন লোড করতে একটি উপায় নয় add_actionতার তাই এটি আপনার কোড ভঙ্গ করবেন করবে একই নামের অন্য কোন ফাংশন আছে দেখতে আপনার কোডটি চেক জন্য। পিএইচপি.net থেকে:

ফাংশন_নামের জন্য অন্তর্নির্মিত (অভ্যন্তরীণ) এবং ব্যবহারকারী-সংজ্ঞায়িত উভয়ই সংজ্ঞায়িত ফাংশনগুলির তালিকা পরীক্ষা করে।

আপনার কোডটিতে যদি আপনার একই ফাংশন দু'বার থাকে তবে এটি ভেঙে যায়, আপনি কেন ডাব্লুপিপি ছাড়া আপনার ফাংশনটিকে উপস্থাপন করেন।

আরও পড়ুন: http://php.net/manual/en/function.function-exists.php


0

আপনি http://php.net/function_exists ব্যবহার করতে পারেন

if(function_exists('my_function')){
   // my_function is defined
}

অথবা আপনি যদি সমস্ত উপলব্ধ ক্রিয়াকলাপ দেখতে চান তবে আপনি সমস্ত মুদ্রণ করুন,

echo "<pre>"; print_r(get_defined_functions());

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

আপনার নির্দিষ্ট লাইব্রেরির জন্য এক্সটেনশন সক্রিয় করার প্রয়োজন হতে পারে।


0

php.net এটি হিসাবে সংজ্ঞায়িত করে

(পিএইচপি 4, পিএইচপি 5, পিএইচপি 7) ফাংশন_এক্সেস্টগুলি - প্রদত্ত ফাংশনটি সংজ্ঞায়িত করা হলে সত্যটি ফিরিয়ে দিন

ব্যবহারের ক্ষেত্রে আমার মিশেলের সাথে একমত হতে হবে যে আপনি [sh] কেবলমাত্র কাস্ট চেক টাইপের অনুরূপ কোনও কিছুর জন্য চেক ব্যবহার করবেন; সুতরাং আপনি খুঁজছেন যদি কোনও ফাংশন বিদ্যমান থাকে (সেই পৃষ্ঠায় বা সেই পৃষ্ঠা / ফাইলের রেফারেন্সে ডাকা কোনও কিছু থেকে) তবে আপনি জানতে পারবেন যে অন্য ফাংশনটি চালানো নিরাপদ কিনা বা কোনও টেমপ্লেট এইচটিএমএলকে সম্ভবত পার্স করতে পারে।

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

if ( function_exists( 'register_sidebar' ) ) { get_sidebar(); }


0

function_exists কোনও থিমে ফাংশন নামের পরে ব্যবহার করা উচিত not

add_action( 'loop_start', 'add_slider' );

function add_slider() {

if ( function_exists( 'soliloquy' ) ) { 

soliloquy( 'slider', 'slug' ); 

    }

}

কোনও ফাংশন এবং / অথবা মার্কআপ আউটপুট দেওয়ার আগে প্লাগইনটি সক্রিয় কিনা তা নিশ্চিত করে তোলে কিনা অন্যথায় আপনি অপরিজ্ঞাত ফাংশনে কল করার মতো ত্রুটি পেতে পারেন।

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