কীভাবে আমি পিএইচপি-তে ডেটা অবজেক্ট-ওরিয়েন্টেডভাবে পাস করব?


11

আমি দেখতে পেলাম যে এমভিসি ফ্রেমওয়ার্কের সাথে কাজ করার সময়ও (যেমন কোডআইগনিটার), আমি নিয়মিতভাবে অবজেক্টের চেয়ে নেস্টেড অ্যারেগুলি পাস করার অবলম্বন করি।

এটি আমার অবজেক্ট-ভিত্তিক ভাল বোঝার অনুসরণ করে না। উদাহরণস্বরূপ, যদি আমি জাভায় কোডটি পোর্ট করে থাকি তবে আমি আর এরিগুলি (বা ভেক্টরগুলি, বা যাই হোক না কেন) এর মতো পাস করার স্বপ্ন দেখব না।

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

উত্তর:


8

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

এখন ওওর "খারাপ" বাস্তবায়ন বলে কিছুই নেই। জাভা এর ওও একটি চূড়ান্ত বাস্তবায়ন নয় যা প্রতিটি অন্যান্য ভাষায় অনুসরণ করা উচিত বা তা অবশ্যই অনুসরণ করা উচিত। কিছু নির্দিষ্ট ধারণা আছে এবং উভয় ভাষা তাদের নিজস্ব উপায়ে পুরোপুরি প্রয়োগ করে (শুরু থেকে জাভা, সংস্করণ 5 থেকে পিএইচপি)।

সুতরাং, আপনার প্রশ্নের উত্তর দেওয়ার জন্য: সিআই কী করে এবং আপনি এটি দিয়ে কী করছেন তা পিএইচপি বিশ্বে সঠিক is পিএইচপি-এর অ্যারেগুলি তার সবচেয়ে নমনীয় এবং দরকারী কাঠামোর মধ্যে একটি এবং যখন আপনার ডেটা কেবল তথ্য হয় (তাদের সাথে যুক্তি বহন করবেন না) তখন অবজেক্টগুলির উপরে অ্যারে ব্যবহার করা আসলে ভাল জিনিস। সম্পূর্ণ ওও কোডটি "কেবল ওও কোড" এর মতো নয়।

আপনি যদি পিএইচপি দিয়ে শুরু করছেন তবে ভাল ওও অনুশীলনের জন্য রেফারেন্স হিসাবে জাভা ব্যবহার করবেন না তবে "জাভা এটি আলাদাভাবে করে" জিনিসটির কারণে পিএইচপি সম্পর্কে আপনার বোঝার সীমাবদ্ধ করবেন না। আপনি উভয়ই সত্যই স্ক্রু আপ করতে পারেন, ধারণাটি না পেলে দৃষ্টান্ত আপনাকে সংরক্ষণ করবে না।

যদি কোনও ক্ষেত্রে আপনি জাভাটিকে নিজের পছন্দ অনুসারে আরও খুঁজে পান (ব্যক্তিগত পছন্দ হিসাবে) রুবিকে ওয়েব বিকাশের জন্য পরীক্ষা করে দেখুন, সেগুলি কিছুটা ঘনিষ্ঠভাবে সম্পর্কিত।


কেন আমরা জাভা ওওকে পিএইচপি ওওর সাথে বিভ্রান্ত করব না? এগুলি পিএইচপি-র একটি নেটিভ অ্যারে / হ্যাশ ডেটাটাইপ ব্যতীত এগুলি বেশ একইরকম।
মার্টিন উইকম্যান

বাস্তবায়নগুলিও বেশ একই রকম। আমি উভয় ভাষায় এগুলি কীভাবে ব্যবহৃত হয় তা উল্লেখ করছি।
ইন্নিস

ওওপি-তে আমার একটি সমস্যা আছে। আমি একটি অ্যাপ্লিকেশন (পিএইচপি বেস) এর জন্য ওওপি ডিজাইন তৈরি করতে চাই, যেখানে একটি অবজেক্ট অন্যান্য বস্তুর উপর নির্ভর করবে। আমি পিএইচপি এ কীভাবে পরিচালনা করব? plz আমাকে সাহায্য করুন ...
ইমরান খান

উদাহরণ পরিস্থিতি: হোটেল অবজেক্টে রুম অবজেক্ট রয়েছে, যেখানে কোনও রুম অবজেক্টের সাথে ডেট অবজেক্টস রয়েছে ... এবং একটি ডেট অবজেক্টে ব্যক্তির ধরণের দাম রয়েছে। এখন ওওপি বেস দ্বারা পিএইচপি-তে এই ধরণের পরিস্থিতি কীভাবে পরিচালনা করবেন (কারণ এখানে প্রতিটি স্তরে প্রসেসিং প্রয়োজন এমন বড় ডেটা রয়েছে)।
ইমরান খান

@ ওয়াল্টার আমি আপনার প্রতিক্রিয়ার জন্য অপেক্ষা করছি .... plz আমাকে সহায়তা করুন।
ইমরান খান

2

অ্যারেগুলির পরিবর্তে অ্যারেজ অবজেক্টস কেবল কারণ এটির অবজেক্টগুলি OO দৃষ্টান্ত নয়, এটি কেবল ব্যক্তিগত পছন্দ :)

অবজেক্টস আইডিইতে হ্যান্ডিং কোড সমাপ্তি দেয়, ইন্টারফেস (টাইপ ইঙ্গিত) এবং উত্তরাধিকার ব্যবহার করা যেতে পারে।

যদি আপনি অ্যারের পরিবর্তে অবজেক্টগুলি ব্যবহার করতে চান কারণ আপনি কোনও সুবিধা দেখেন - সেগুলি ব্যবহার করুন তবে আপনি যদি এটি কেবলমাত্র এটির কারণেই ব্যবহার করতে চান তবে এই সময়টিকে পুনরুদ্ধার করার জন্য আপনার সময় নষ্ট করবেন না :)


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

@ ইয়ানিস রিজোস, হ্যাঁ, অবজেক্টস এমনকি কম সম্পাদিত মেমরি ব্যবহার করতে পারে।
ওজেড

তারা কেবল কম স্মৃতি ব্যবহার করতে পারে তা নয়, তাদের মেমরির ব্যবহার অপ্রাসঙ্গিক কারণ এটি সিস্টেমের অন্যান্য মেমরি কর্মক্ষমতা দিকগুলির সাথে তুলনামূলকভাবে ক্ষুদ্রতর এবং অবজেক্টগুলি ব্যবহারের সুবিধার তুলনায় তুচ্ছ। আমরা যদি মেমরির ব্যবহারের বিষয়ে এত যত্ন করে থাকি তবে আমরা কখনই অবজেক্টগুলি ব্যবহার করব না। আমরা যা যত্ন করি তা হ'ল বস্তুগুলি সিস্টেমগুলি সম্পর্কে বিতর্ক এবং নির্মাণের জন্য আরও ভাল সরঞ্জাম দেয়।
রেন হেনরিখস ২

@ রিন হেনরিচস, আমি এটি জানি, ধন্যবাদ। সে কারণেই আমার উত্তর থেকে 'স্মৃতি' সম্পর্কে সমস্ত শব্দ মুছে ফেলা হয়েছে। আমি নির্বোধ অপ্টিমাইজেশন করার চেষ্টা করছি না, তবে আমি নিশ্চিত objects just because they are objectsযে রিফ্যাক্টর করার কোনও কারণ নয় :) আমার উত্তরটি পড়ুন, কেবল মন্তব্যই নয়।
ওজেড

যথেষ্ট ন্যায্য, আমি সম্পাদনার আগে মন্তব্য করেছি।
রেন হেনরিচস

1

আপনি ওও সিস্টেমে সত্যই চারপাশে ডেটা পাস করেন না - আপনি চারপাশে অবজেক্টগুলি পাস করেন । পার্থক্যটি হ'ল বস্তুগুলিতে আচরণের পাশাপাশি ডেটা থাকে। সে কারণেই তারা এটিকে অবজেক্ট ওরিয়েন্টেড বলে এবং ডেটা ওরিয়েন্টেড নয়।

যতক্ষণ না আপনার ডেটার সাথে আপনার আচরণের প্রয়োজন হয় না, ততক্ষণ প্লেইন পুরাতন পিএইচপি অ্যারেগুলি মান অবজেক্টগুলির মতো ঠিক (বা খারাপ, আপনার দৃষ্টিভঙ্গির উপর নির্ভর করে) হয়।


0

আমি মনে করি এটি সামঞ্জস্যের প্রশ্ন মাত্র - প্রোগ্রামিংয়ে "অবজেক্টস" এর অনেকগুলি বাস্তবায়ন রয়েছে - পাইথন এবং জাভাস্ক্রিপ্টের উল্লেখযোগ্যভাবে পৃথক বৈশিষ্ট্য রয়েছে। পিএইচপি ওও তাত্ক্ষণিকভাবে একটি হ্যাক - পিএইচপি অ্যারেগুলি গতানুগতিক অর্থে "অবজেক্ট" নয় - তবে তারা একটি সুস্পষ্ট উদ্দেশ্যে পরিবেশন করে। আপনি যদি না চান ডেটাতে কাস্টম বিহেভিওর থাকে তবে কেন কোনও অবজেক্ট ব্যবহার করবেন?

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

পুনঃ পরিবর্তনযোগ্য মান বস্তু value

http://bradley-holt.com/2010/09/immutable-value-objects-in-php/


তথ্য একটি নির্ভরযোগ্য কাঠামো দিতে। হ্যাঁ, আমি এমন একটি ফাংশন তৈরি করতে পারি যা অ্যারের নির্দিষ্ট বিন্যাস / বাসা বাঁধে তবে কে বলে আমি অন্য ফাংশনটি লিখি না যা এটি সামান্য পরিবর্তন করে এবং তারপরে এটি পাস করে passes
ম্যাথু

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