প্লাগইনে ব্যবহৃত কোনও কার্যকে কীভাবে হ্রাস করবেন?


17

আমি আমার প্লাগইনে যে ফাংশনগুলি ব্যবহার করছি তার মধ্যে একটি হ'ল এমন একটি নাম দিয়ে বৈশ্বিক সুযোগকে দূষিত করছে যা অন্য ফাংশনের সাথে সংঘর্ষে আসতে পারে (অন্য প্লাগইনে ব্যবহৃত হয়)। সুতরাং, আমি অনুমান করি আমার এটি অবমূল্যায়ন করা উচিত। কিন্তু আমি কিভাবে এটি সম্পর্কে যেতে হবে?

function foo() {
    echo 'bar';
}

আমি সচেতন _deprecate_function()তবে আমার প্লাগইনের মূল অংশটি থেকে ফাংশনটি সরাতে আমার নেওয়া উচিত সমস্ত পদক্ষেপের উদাহরণের জন্য কৃতজ্ঞ থাকব।

রেফ: https://developer.wordpress.org/references/function/_drerecated_function/


ভাল প্রশ্ন, তবে সম্ভবত আপনার প্লাগইনটির নাম স্থান দেওয়ার সময় কি এসেছে? আপনি এখনও আপনার
অস্বীকৃত

নেমস্পেসিং এমন একটি বিকল্প যা আমি অন্বেষণ করতে চাই তবে আমি পিএইচপি 5.2 এর জন্য সমর্থন ছেড়ে দিচ্ছি কিনা তা ঠিক সিদ্ধান্ত নেওয়া হয়নি।
হেনরিয়াইট

পিএইচপি সংস্করণ খুব কম থাকলে অবহেলিত বিকল্পটি লোড করা যায় তবে নেমস্পেসিং অন্যথায় আপনাকে একটি রূপান্তর পথ দিতে পারে। আপনার অবহেলিত বার্তাটি তখন "আপনার হোস্টিং সরবরাহকারী পিএইচপি 5.3+ ব্লাহ ব্লাহ ইত্যাদি সমর্থন করে না" হতে পারে
ব্রায়ানালমারিট

উত্তর:


11

@ ওয়েলচারের উত্তর ছাড়াও:

কোরটিতে কিছু ভাল " কবরস্থান " উদাহরণ রয়েছে, যেখানে " ফাংশনগুলি মরে আসে "।

আপনি এগুলি গাইডলাইন হিসাবে ব্যবহার করতে পারেন, যেমন ডকুমেন্টেশন সম্পর্কিত।

এখানে permalink_link()অধীনে জন্য যেমন একটি উদাহরণwp-includes/deprecated.php

/**
 * Print the permalink of the current post in the loop.
 *
 * @since 0.71
 * @deprecated 1.2.0 Use the_permalink()
 * @see the_permalink()
 */
function permalink_link() {
        _deprecated_function( __FUNCTION__, '1.2', 'the_permalink()' );
        the_permalink();
}

_deprecated_functionফাংশনটির জন্য ইনলাইন ডকুমেন্টেশন এখানে ইনপুট আর্গুমেন্টগুলি ব্যাখ্যা করে:

/**
 * Mark a function as deprecated and inform when it has been used.
 *
 * There is a hook deprecated_function_run that will be called that can be used
 * to get the backtrace up to what file and function called the deprecated
 * function.
 *
 * The current behavior is to trigger a user error if WP_DEBUG is true.
 *
 * This function is to be used in every function that is deprecated.
 *
 * @since 2.5.0
 * @access private
 *
 * @param string $function    The function that was called.
 * @param string $version     The version of WordPress that deprecated the function.
 * @param string $replacement Optional. The function that should have been called. 
 *                            Default null.
 */

1
এর জন্য ধন্যবাদ. আমি কোর দ্বারা গৃহীত পদ্ধতির দিকে তাকানোর জন্য ভাবি নি! সুতরাং আমি ধরে নিচ্ছি এইগুলি কি আমার গ্রহণ করা উচিত? 1) আমার ফাংশন থেকে সমস্ত আসল সামগ্রী মুছে ফেলুন 2) একটি কল যুক্ত করুন _deprecated_function()3) আমার নতুন ফাংশনে একটি কল যুক্ত করুন যা
পুরানোটির

1
এটিকে এখানে দ্বিপক্ষীয় সমস্যার মতো বলে মনে হচ্ছে - অবচয় এবং সম্ভাব্য নাম সংঘর্ষ। আমি এখানে প্রশ্নের প্রথম শিরোনাম অনুযায়ী প্রথম অংশটি সম্বোধন করেছি।
বার্জায়ার

1
@ মার্কক্যাপলুন আমি সম্মতি জানাই যে এখানে 2 টি সমস্যা চলছে। প্রশ্নটি ছিল কীভাবে ফাংশনটিকে হ্রাস করা যায় এবং এটাই আমার উত্তর ভিত্তিক ছিল। __Doing_it_wrong নোটিশটি হ'ল ডেভেলপারদের জন্য যারা এই থিমগুলিতে এই পদ্ধতিটি কল করছেন ইত্যাদি তাদের কেবলমাত্র সাইটটি সাদা করার জন্য এপিআই-র পরিবর্তনের বিষয়ে প্রতিক্রিয়া জানানোর অনুমতি দেয়। লগ অবহেলিত নোটিশ একটি দুর্দান্ত দেব প্লাগইন যা আপনাকে মূল পরিবর্তনের সাথে তাল মিলিয়ে চলতে দেয় এবং এই ক্ষেত্রেও সহায়তা করবে।
ওয়েলচার

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

2
@ মার্কক্যাপলুন আমি নিশ্চিত নই যে আপনি কীসের বিরুদ্ধে বিতর্ক করছেন (বা এর জন্য?) প্রশ্নটি ছিল কীভাবে কোনও পদ্ধতির অবমূল্যায়ন করা যায় এবং এটি এই বিষয়টি দ্বারা স্পষ্ট হয় যে ওপি "আমার প্লাগইন" জানে অবমূল্যায়নের অর্থ কী যে সে একজন বিকাশকারী। আপনি যে কাল্পনিক ব্যবহারের কথা বলছেন তার এই নির্দিষ্ট প্রশ্নের সাথে কোনও সম্পর্ক নেই। আপনি যদি লগটিতে এক মিলিয়ন নোটিশ পাওয়ার বিষয়ে উদ্বিগ্ন হন, তবে WP_DEBUG সক্ষম থাকলে এবং কেবল আপনার প্রশ্নে, পদ্ধতিগুলি কেবল অ-বিকাশকারীদের দ্বারা সক্ষম করা সম্ভব হবে না এবং উত্পাদনে অবশ্যই সক্ষম হবে না question আমি শ্রদ্ধার সাথে কেবল এই পদক্ষেপের সাথে একমত হতে সম্মত হতে
চলেছি

7

অবচয় সর্বদা অপসারণের সমান হয় না, এর অর্থ সাধারণত আইটেমটি API থেকে খালি অপসারণের জন্য চিহ্নিত করা হয়। এটি কি এমন একটি পন্থা যা বাহ্যিকভাবে বলা হবে - যেমন অন্যান্য প্লাগইন বা বিকাশকারীরা? যদি এই পদ্ধতিটি কেবল অভ্যন্তরীণভাবে প্লাগইন দ্বারা ব্যবহৃত হয়, আপনি সম্ভবত নিরাপদে এটি একটি আরও ভাল নাম ফাংশন দিয়ে প্রতিস্থাপন করতে পারবেন।

যদি তা না হয় তবে আমি আরও ভাল নামকরণের ফাংশনটি তৈরি করব এবং একটি __doing_it_wrongকল দিয়ে খারাপ নামকরণ করেছি - কোডেক্সে এটি পড়ুন এটি অন্যান্য বিকাশকারীদের পদ্ধতির রেফারেন্স আপডেট করার জন্য সময় দেবে এবং আপনি নিরাপদে পদ্ধতিটি মুছে ফেলতে পারবেন পরবর্তী সংস্করণ

function badly_named() {

    __doing_it_wrong( 'badly_named', 'This method has been deprecated in favor of better_named_function' );

    /**
     * Call the better named method
     */
     better_named_function();
}

আশাকরি এটা সাহায্য করবে!


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

আমার কাছে ভাল লাগছে :)
লাগছে

1

আপনি একটি নতুন প্লাগইন তৈরি করেন এবং বর্তমান ব্যবহারকারীদের ইওএল হওয়ায় আপনার ব্যবহারকারীদের এতে স্থানান্তরিত করার পরামর্শ দেন।

প্লাগইন এবং থিম লেখকরা তাদের পাবলিক এপিআই পরিবর্তন করে এবং "একে অন্য ছোট আপগ্রেড" হিসাবে বিবেচনা করার চেষ্টা করার চেয়ে বিরক্তিকর কিছুই নেই। সাইটগুলি ভাঙ্গার কোনও কারণ নেই কারণ কোনও সমস্যার কারণে আপনার ব্যবহারকারীরা বাস্তবে ক্ষতিগ্রস্থ হচ্ছে না।


যদি অন্য প্লাগইনটিতে একই নামের সাথে ফাংশন থাকে (এবং নামস্থান ব্যবহার করে না) তবে আমার ব্যবহারকারীরা এটি দ্বারা সম্পূর্ণভাবে প্রভাবিত হবেন।
হেনরিয়াইট

না, প্লাগইন অ্যাক্টিভেশন ব্যর্থ হবে এবং তারা আপনার বা অন্য প্লাগইনটির লেখকের কাছে অভিযোগ করবে। শূন্য প্রায় মোট বিঘ্ন সময়। যদি তাদের উভয় প্লাগইনকে কোনও নতুনতে আপগ্রেড করতে হয় তবে সাইটের ক্রিয়াকলাপে কোনও বাধা ছাড়াই 15 মিনিটের বেশি লাগবে না। আপনি যা চান তা আপনার কিছু ব্যবহারকারী আপগ্রেড করবেন এবং আবিষ্কার করবেন যে কিছু কার্যকারিতা কোনও বিজ্ঞপ্তি ছাড়াই আর কাজ করছে না working ঠিক করার সময়? আপনি কি মনে করেন যে তাদের আদৌ একটি ব্যাকআপ আছে এবং এটি ঠিক করতে পারে?
কাপলুন

একবার আপনি একটি এপিআই তৈরি করার পরে আপনাকে এটিকে চিরতরে সমর্থন রাখতে হবে বা কমপক্ষে অবধি একেবারে বেআইনী হতে হবে, উদাহরণস্বরূপ ওয়ার্ডপ্রেস আসলে ৩.৪-এর থেকে অবহেলিত এপিআইয়ের কোনওটি সরিয়ে ফেলেনি, এবং কেবলমাত্র একটি বিজ্ঞপ্তি যুক্ত করলে কোনও লাভ হবে না।
কাপলুন

1
+1 কারণ আমি আপনার মতামতকে শ্রদ্ধা করি এবং এই সাইটটি সম্পর্কে আমি যা উপভোগ করি তা হ'ল সমস্যাগুলির বিভিন্ন দৃষ্টিভঙ্গি, দৃষ্টিভঙ্গি এবং সমাধান, কারণ সাধারণত কোনও আকারের সাথে মানানসই হয় না all
বার্জায়ার

1

আমি এই জাতীয় কিছু প্রস্তাব করব:

/**
 * @deprecated Please use good_function_name() instead
 * @since x.y.z Marked deprecated in favor of good_function_name()
 * @see good_function_name()
 */
function bad_function_name() {
    trigger_error(
        'The ' . __FUNCTION__ . ' function is deprecated. ' .
        'Please use good_function_name() instead.',
        defined( 'E_USER_DEPRECATED' ) ? E_USER_DEPRECATED : E_USER_WARNING
    );

    return good_function_name();
}

এটি স্ট্যাক ট্রেস সহ লগগুলিতে অবমূল্যায়ন সতর্কতা দেখানোর প্রভাব ফেলে। স্বাভাবিকভাবেই এটি কেবল তখনই কাজ করবে যদি লগিং ওয়ার্ডপ্রেসে সক্ষম হয়।

টেনারি অপারেটরটি রয়েছে কারণ E_USER_DEPRECATED ধ্রুবক কেবল পিএইচপি 5.3.0 এ চালু হয়েছিল। পুরানো সংস্করণগুলিতে আমরা পরিবর্তে একটি সাধারণ ব্যবহারকারীর সতর্কতায় ফিরে যেতে পারি।

ত্রুটি ধ্রুবকগুলিতে পিএইচপি ম্যানুয়াল থেকে :

E_DEPRECATED রান-টাইম নোটিশ। ভবিষ্যতের সংস্করণগুলিতে কাজ করবে না এমন কোড সম্পর্কে সতর্কতা পেতে এটি সক্ষম করুন।

যে কারণে আমি _ডোইং_ইট_রং বা __drecated_function ব্যবহার করতে পছন্দ করি না তা হ'ল এই ফাংশনগুলি কেবল ওয়ার্ডপ্রেস মূলের জন্য। এই ফাংশনগুলির কোড রেফারেন্স থেকে:

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


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