যার ধরণের সত্তা অডিটিড্রপাল র‌্যাপার শ্রেণি থেকে উদ্ভূত হয়েছে সেগুলি পরীক্ষা করার জন্য কি ভাল উপায় আছে?


38

আমি নিশ্চিত যে এই প্রশ্নটি অন্যান্য জটিল অবজেক্টের ধরণের ক্ষেত্রে প্রযোজ্য তবে EntityDrupalWrapperআমি বর্তমানে এটির সাথে কাজ করছি। এটি entity_metadata_wrapper()(এবং সম্ভবত অন্যরা) দ্বারা প্রত্যাবর্তিত বস্তুর প্রকার ।

নিম্নলিখিতগুলির মতো কোড ব্যবহার করার সময়:

$order_wrapper = entity_metadata_wrapper('commerce_order', $order_object);
dpm($order_wrapper);

দেভেল থেকে আউটপুট খুব বেশি সহায়ক নয়:

স্ক্রিনশট

এটি প্রদর্শিত হবে না আপনি dpm()উদাহরণস্বরূপ, কোনও stdClassঅবজেক্টের সাথে কল করার জন্য কী দেখতে চান ।

অনুরূপ একটি কলটি dvm()অবজেক্টটি প্রিন্ট করে, তবে একটি পদ্ধতিতে আমি এর সাথে পরিচিত নই এবং এটি খুব পাঠযোগ্য নয়।

আমি চেষ্টা করেছি debug()এবং এটি একটি পিএইচপি ব্যবহারকারীর নোটিশ তৈরি করেছে যা দেখতে এরকম কিছু দেখাচ্ছে:

স্ক্রিনশট 2

ঘটনাচক্রে সেই সতর্কতার মধ্যে থাকা এইচটিএমএল আউটপুট হ'ল একই আউটপুট যা dvm()স্ক্রিনে প্রিন্ট করে।

আমি কীভাবে এই ধরণের অবজেক্টগুলি পর্যালোচনা করতে পারি (ক্রোমো সহকারে), তাই আমি কী বৈশিষ্ট্য উপলব্ধ তা দেখতে পাচ্ছি? নাকি আমি আটকাচ্ছি ব্যবহার করে dvm()?



ধন্যবাদ @ শুয়েব নওয়াজ, ভয় পেয়েছি যদিও তার সাথে আরও কম সাফল্য (আমি প্রশ্নটি আপডেট করেছি)
ক্লাইভ

2
হ্যাঁ, র্যাপার ক্লাসগুলির ক্ষেত্রে এটি হ'ল সমস্যা। ডিপিএম () / ক্রোমো কেবলমাত্র জনসাধারণের সম্পত্তি দেখায়। মোড়কের ক্লাসের সমস্ত কিছুই সুরক্ষিত এবং যাদু __get () এবং __set () পদ্ধতিগুলির মাধ্যমে অ্যাক্সেস করা হয়েছে।
বারদির

@ বার্দিরকে আমি এতে ভয় পেয়েছিলাম; আমি তাকান নি তবে এটির মতো প্রচুর গন্ধ পেয়েছিল __get()এবং __set()এতে জড়িত ছিল। আগ্রহের বাইরে কোন শ্রেণীর কী কী রেপারের জন্য শ্রেণীর বৈশিষ্ট্য রয়েছে তা সন্ধান করার কোনও পছন্দসই উপায় আপনার কাছে রয়েছে? নাকি অভিজ্ঞতার ভিত্তিতে এটি 'জানার' বিষয়?
ক্লাইভ

1
@ বার্দির আমি মনে করি না যে আপনি এটি সম্পর্কে অবহিত হবেন, আপনি এটি ব্যবহার করতে পারবেন dpm($wrapper->getPropertyInfo());, এটি সত্যিই জিনিসগুলিতে সহায়তা করে
ক্লাইভ

উত্তর:


38

ডিপিএম ব্যবহার করুন ($ মোড়ক-> getPropertyInfo ());

এটি ডক্সে আছে


এবং আপনার নোড থেকে নির্দিষ্ট ক্ষেত্রগুলি পরিদর্শন করতে আপনি ব্যবহার করতে পারেনkpr($wrapper->my_custom_field->value());
wranvaud

4

আমি এন্টিড্রুপাল র্যাপার অবজেক্টের সাথে খেলছিলাম। ডিবাগ () সাধারণত __toString () দ্বারা প্রস্তুত থাকতে পারে আউটপুট ফেরত দেয়

আমি ফোরচ ব্যবহার করে সত্তাড্রুপাল র্যাপার অবজেক্টটি পুনরাবৃত্তি করেছিলাম এবং এটি বৈশিষ্ট্যের নাম তালিকাভুক্ত করতে সহায়তা করে।

foreach($order_wrapper as $name => $obj){
  debug($name);
  debug(get_class($obj)); //EntityValueWrapper
}

এখানে $objটাইপের একটি বিষয় রয়েছেEntityValueWrapper

$ জেজ-> মান () দ্বারা পড়তে পারে এবং $ اعتراض-> সেট ('মান') দ্বারা লেখা যেতে পারে;

সম্পাদনা করুন:

আপনি যদি দ্বিতীয়
প্যারাম অর্থাৎ সত্তা_মেটাডেটা_র্যাপার ('বাণিজ্য_অর্ডার') ছাড়াই আপনার মোড়ক তৈরি করে থাকেন ;
তারপরে সেট এবং মান পদ্ধতিগুলি প্রয়োগ করা হয়নি বলে ব্যতিক্রম ছুঁড়ে ফেলবে।


4

আমি নিজের ছোট্ট উইজেটটি র‍্যাপারটিকে আনرول করার জন্য লিখে দিয়েছি:

function _wrapper_debug($w) {
  $values = array();
  foreach ($w->getPropertyInfo() as $key => $val) {
    $values[$key] = $w->$key->value();
  }
  return $values;
}

dpm(_wrapper_debug($some_object_wrapper));

আশা করি কেউ এটিকে কাজে লাগিয়েছেন।


3

পরিদর্শন মডিউল ডেটা আপনি ডিবাগ করতে চান তার একটা চমৎকার কাঠামোগত দেখতে দেয়।

ফাইলের বা স্ক্রিনে ডাটাবেস লগ (রিপোর্ট / সাম্প্রতিক লগ বার্তাগুলি) - শিক্ষণীয় এবং ভাল ফর্ম্যাটেড ভেরিয়েবল ডাম্প, গভীর স্ট্যাক ট্রেস এবং এক্সিকিউশন টাইম প্রোফাইল পান।


3

আপনি যদি মোড়কে "পাওয়ার" করে দেওয়ার মূল জিনিসটি পরীক্ষা করতে চান তবে চেষ্টা করুন:

dpm($wrapper->raw())

এটি আমার পক্ষে ভাল কাজ করে।



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