একটি ক্লাস সংজ্ঞায়িত হয়েছিল যেখানে পিএইচপি ফাইল (রান সময়ে) সন্ধান করা


111

পিএইচপি-তে এমন কোনও প্রতিবিম্ব / অন্তঃসংশোধন / যাদু আছে যা আপনাকে পিএইচপি ফাইল সন্ধান করতে দেবে যেখানে নির্দিষ্ট শ্রেণি (বা ফাংশন) সংজ্ঞায়িত করা হয়েছিল?

অন্য কথায়, আমার কাছে একটি পিএইচপি ক্লাসের নাম, বা একটি তাত্ক্ষণিকভাবে অবজেক্ট। আমি এটি এমন কিছুতে (ফাংশন, প্রতিবিম্ব শ্রেণি ইত্যাদি) পাস করতে চাই যা ক্লাসটি সংজ্ঞায়িত করা হয়েছিল এমন ফাইল সিস্টেমের পথে ফিরে আসবে।

/path/to/class/definition.php

আমি বুঝতে পেরেছি যে আমি ব্যবহার করতে পারি ( get_included_files())এতদূর অন্তর্ভুক্ত থাকা সমস্ত ফাইলের একটি তালিকা পেতে এবং তারপরে সেগুলি নিজেই বিশ্লেষণ করতে পারি, তবে এটি একক প্রচেষ্টার জন্য অনেক ফাইল সিস্টেম অ্যাক্সেস।

আমি এও বুঝতে পারি যে আমাদের __autoload প্রক্রিয়াতে আমি কিছু অতিরিক্ত কোড লিখতে পারি যা এই তথ্যটিকে কোথাও ক্যাশে করে। যাইহোক, বিদ্যমান __autoload সংশোধন করা আমার মনে করা পরিস্থিতিতে সীমাবদ্ধতার বাইরে।

এটি করতে পারে এমন এক্সটেনশানগুলি সম্পর্কে শুনতে আকর্ষণীয় হবে তবে আমি শেষ পর্যন্ত এমন কিছু পছন্দ করতে চাই যা "স্টক" ইনস্টলটিতে চলতে পারে।


2
ম্যাজেন্টো আমাকে এখানে এনেছে: -]
অ্যালান

@ আলালান সেখানে কিছু সম্পত্তি নামের বানান দেখতে ভাল।
অ্যালান ঝড়

উত্তর:



10

নেমস্পিড ফাইলে রিফ্লেকশনক্লাসের জন্য, এটিকে বিশ্বব্যাপী তৈরি করার জন্য একটি উপসর্গ "\" যুক্ত করুন:

$ প্রতিবিম্বকারী = নতুন \ প্রতিবিম্বক্লাস ('এফওও');

অন্যথায়, এটি একটি ত্রুটি উত্পন্ন করবে বলেছিল একটি নাম স্থানের প্রতিবিম্ব প্রতিচ্ছবি সংজ্ঞায়িত নয়। উপরের উত্তরের জন্য মন্তব্য করার অধিকার আমার নেই, তাই আমি এটি পরিপূরক উত্তর হিসাবে লিখি।


0

যদি আপনার কোনও ফোল্ডার থাকে তবে আপনি "ক্লাস $ ক্লাসনেম" এর জন্য "গ্রেপ" তে শেল স্ক্রিপ্ট কমান্ডটি চালিয়ে নিতে পারেন: $filename = ``grep -r "class $className" $includesFolder/*\এবং এটি কোন ফাইলটিতে ছিল তা ফিরে আসবে that এগুলি ছাড়া, আমি মনে করি কোনও যাদু আছে বলে আমি মনে করি না পিএইচপি এর জন্য এটি করার জন্য ফাংশন করুন।


3
এখানে সৎ, নন-অ্যাসহোল কৌতূহল। আপনি ইতিমধ্যে বিবেচনা করা এবং প্রত্যাখ্যান করা ধারণাটির চেয়ে এই উত্তরটি কী আরও ভাল ছিল? "আমি বুঝতে পেরেছি যে এখন পর্যন্ত অন্তর্ভুক্ত থাকা সমস্ত ফাইলের একটি তালিকা পেতে আমি (get_incused_files ()) ব্যবহার করতে পারি এবং তারপরে সেগুলি নিজেই বিশ্লেষণ করতে পারি, তবে এটি একক প্রচেষ্টার জন্য অনেক ফাইল সিস্টেম অ্যাক্সেস।"
অ্যালান স্টর্ম

কারণ এর এক লাইন যদিও বহু লাইনের বিপরীতে পিএইচপি-তে পার্সার লিখতে চাইবে এবং গ্রেপ ফাংশনটি সি সংকলিত হয়েছে, আমি মনে করি এবং সম্ভবত যা লেখা হয়েছে তার চেয়ে অনেক দ্রুত faster
Seaux

আহ, বুঝেছি আমার আসল উদ্বেগটি পুনরায় করা হয়েছিল বার বার এই ফাইলগুলিতে অ্যাক্সেস করার জন্য (এটি এমন কিছু যা আমার দ্বারা তৈরি করা সরঞ্জামের মধ্যে অনেক কিছু ঘটবে) এবং কোডের পরিমাণ নয় যা আমি পরবর্তীটি পরিষ্কার করার চেষ্টা করব সময়। (এফওয়াইআই: আপনার এসিকে সন্ধান করা উচিত gre এটি গ্রেপের চেয়েও ভাল))
অ্যালান স্টর্ম

আক্ক বা অজক? আমি ছদ্মবেশ পছন্দ করি, এটি আসলে আমার ফেভ প্রোগ্রামিং ভাষা, তবে আরও লোকেরা নিয়মিত
গ্রেপ

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