পিএইচপি-তে শ্রেণিবদ্ধ পদ্ধতিগুলির ডিফল্ট দৃশ্যমানতা


118

আমি তাকালাম ম্যানুয়ালটি , তবে উত্তরটি খুঁজে পাচ্ছি বলে মনে হচ্ছে না।

দৃশ্যমানতা ছাড়াই পদ্ধতিগুলির জন্য পিএইচপি-তে ডিফল্ট দৃশ্যমানতা কী? পিএইচপি এর জাভা মত একটি প্যাকেজ দৃশ্যমানতা আছে?

উদাহরণস্বরূপ, নিম্নলিখিত কোডে, go()সরকারী বা ব্যক্তিগত?

class test {
  function go() {
  }
}

আমি জিজ্ঞাসা করার কারণটি হ'ল আমি অনেক কনস্ট্রাক্টর কোড function __construct()এবং কিছু হিসাবে লেখা দেখেছি public function __construct()। তারা কি সমতুল্য?

উত্তর:


179

ডিফল্ট সর্বজনীন।

শ্রেণি পদ্ধতিগুলি সরকারী, ব্যক্তিগত বা সুরক্ষিত হিসাবে সংজ্ঞায়িত করা যেতে পারে। কোনও সুস্পষ্ট দৃশ্যমানতা কীওয়ার্ড ছাড়াই ঘোষিত পদ্ধতিগুলি জনসাধারণ হিসাবে সংজ্ঞায়িত করা হয়।

http://www.php.net/manual/en/language.oop5.visibility.php


11
একই বৈশিষ্ট্যগুলির জন্য যায়
মার্ক ২৩7777

7
একই ধ্রুবক জন্য যায়।
কোলিউনিয়া

22

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

এবং না, পিএইচপি-র কোনও প্যাকেজ দৃশ্যমানতা নেই, মূলত কারণ পিএইচপি-র কোনও প্যাকেজ ছিল না।


16
@ আইয়ান: আমি বলব কারণ "স্পষ্টতই প্রকৃত চেয়ে ভাল" ( পাইথনের জেন যেমন বলে) এটি অন্যান্য প্রোগ্রামারদের মস্তিষ্কের চক্রগুলি বিস্মিত করে ভেবে ভেবে ভেবেছিল যে নির্মাণকারী ব্যক্তিগত বা জনসাধারণ বা কী। লোকেরা যদি সর্বদা অ্যাক্সেস সংশোধক ব্যবহার করে তবে মূল পোস্টারটি এই প্রশ্নটি নাও করতে পারে।
ব্যবহারকারী 21

নোটের বিষয়টিও, জাভা-র মতো ভাষাগুলিতে প্যাকেজ-প্রাইভেট হ'ল ডিফল্ট, এটি ডিজাইন অনুসারে প্যাকেজ-ব্যক্তিগত কিনা তা সর্বদা ভাবতে পারে বা বিকাশকারী এটি নির্দিষ্ট করতে ভুলে গিয়েছিলেন (বিশেষত সিনিয়র বিকাশকারীদের সাথে কাজ করার সময়)। সে কারণেই পিএমডি এগুলির
Johnco

9

ডিফল্টটি সর্বজনীন। কারণ সম্ভবত পুরানো কোডটি পাবলিক হওয়ার প্রত্যাশা করে কারণ পিছনে সামঞ্জস্যতা রয়েছে (এটি প্রকাশ্য না হলে এটি কাজ করা বন্ধ করবে)।


যুক্তি জন্য কুডোস।
Guney Ozsan


1

যখন কোন দৃশ্যমানতা শব্দ ( public, privateবা protected) ব্যবহার, পদ্ধতি হতে হবে প্রকাশ্য । তবে, আপনি এইভাবে বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে পারবেন না। জন্য বৈশিষ্ট্য , আপনি ঘোষণা একটি দৃশ্যমানতা শব্দ সংযোজন করতে হবে।

শ্রেণীর জন্য ঘোষিত না হওয়া এবং আপনি কোনও পদ্ধতির অভ্যন্তরে এর জন্য একটি মান নির্ধারণ করে এমন বৈশিষ্ট্যগুলির জন্য সর্বজনীন দৃশ্যমানতা থাকবে।

<?php
class Example {
    public $name; 
    public function __construct() {
        $this -> age = 9; // age is now public
        $this -> privateFunction();
    }
    private function privateFunction() {
        $this -> country = "USA"; // this is also public
    }
}

0

function __construct()এবং public function __construct()একই পদ্ধতির নাম হিসাবে কাজ করে।

আপনি যদি কোনও পদ্ধতির নামের জন্য উপসর্গটি নির্ধারণ করতে না পারেন তবে এটি ডিফল্ট পাবলিক হওয়া উচিত।

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