আমি বর্তমানে একটি মডিউলে কাজ করছি যার জন্য তৃতীয় পক্ষের পিএইচপি লাইব্রেরি প্রয়োজন, যা মূলত একক পিএইচপি ক্লাস। সাধারণত, আমি এটিকে একটি অন্তর্ভুক্ত / উপ-ডিরেক্টরিতে যুক্ত করব এবং যুক্ত করব
files[] = includes/Foo.php
আমার .info ফাইলটিতে এবং ড্রুপাল 7 শ্রেণীর অটো লোডারকে এটি করতে দিন যখন আমি একটি করি $foo = new Foo()।
যদিও আমার কাছে এই মডিউলটি জনসাধারণের কাছে প্রকাশ করার অনুমতি রয়েছে এবং মডিউলটি সহ লাইব্রেরিটি অন্তর্ভুক্ত করা উচিত নয়। লাইসেন্স সংক্রান্ত জটিলতাগুলি সম্পর্কে আমি ভালভাবে সচেতন, তবে এই প্রশ্নের খাতিরে, আমি এড়াতে চাই।
একটি অনুরূপ প্রশ্ন আছে, আমি কীভাবে পিএইচপি লাইব্রেরি অন্তর্ভুক্ত করব? , তবে আমি সত্যিই ভাবি না এটি আমার দ্বিধাটির জবাব দেয়।
এই প্রশ্নের উত্তরটি মূলত গ্রন্থাগারগুলির এপিআই ব্যবহার করতে বলে , তবে আমি যে প্রতিটি একক মডিউল পেয়েছি তা libraries_get_path()বেসপথ পেতে কেবল একটি কাজ করে (এবং যখন এটি উপলব্ধ না হয় তখন ফ্যালব্যাক পাথ অন্তর্ভুক্ত করে) এবং তারপরে একটি requireবা includeকিছু করে ত্রুটি যাচাই (বা না)। সকলেই এমন কিছু করে:
if (!class_exists('Foo')) {
$path = function_exists('libraries_get_path') ?
libraries_get_path('foo') : 'sites/all/libraries/foo';
if (!include($path . '/Foo.php')) {
// handle this error
}
}
এই ক্ষেত্রে, গ্রন্থাগারগুলির এপিআই সত্যই কিছু করছে না। ব্যবহারকারীদের একটি অনুলিপি ডাউনলোড করতে এবং এটি নিজেই মডিউল ফোল্ডারে রাখার পুরানো পদ্ধতির চেয়ে এটি ব্যবহার করার সুবিধাটি আমি দেখতে পাচ্ছি না। এবং, মডিউল বিকাশকারীকে এখনও / দ্বারা লোডটি ম্যানুয়ালি করা দরকার এখনও আছে । উদাহরণস্বরূপ, ফেসবুক মডিউলটি কেবলমাত্র একটিতে লাইব্রেরি লোড করে এবং এইচটিএমএল পিউরিফায়ার মডিউলটির প্রতিটি সময় লাইব্রেরির প্রয়োজন হয় তা পরীক্ষা করে লোড করার জন্য একটি অভ্যন্তরীণ ফাংশন থাকে।includerequirehook_init
এটি একটি বিস্তৃত অনুশীলন হতে পারে তবে এটি সর্বোত্তম অনুশীলনের মতো বলে মনে হচ্ছে না ।
আমার মডিউলটি কি উদ্যোগ নিতে হবে এবং hook_libraries_infoআমি libraries_load('foo')কীভাবে ব্যবহার করতে পারি তা ঘোষণা করা উচিত ? এটিও অদ্ভুত বলে মনে হচ্ছে।
if (libraries_load($name)) {..}লাইব্রেরির উপস্থিতি না থাকলে ডাব্লুএসওডি এড়ানো।