Каково различие между пространством имен, классом, объектом и экземпляром?

Когда вы отправляете форму, она должна перехватывать данные поста в действии контроллера, как это-

class MyController
{
    public function create()
    {
        // Your form
    }

    public function store()
    {
        // This is where you receive the zone and villa in the request
    }
}

. Как вы можете видеть, вы получили поле ввода в запросе в вашем методе магазина, теперь вы можете сделайте что-то вроде этого -

public function store(Request $request)
{
    // Your code here
    redirect()->to($request->zone.'/'.$request->villa);
}

Пожалуйста, убедитесь, что у вас есть маршруты , созданные для зоны и виллы, в противном случае перенаправление на несуществующий маршрут / URL не будет работа.

Создайте такой маршрут для вашего запроса:

Route::get('estates/{zone}/{villa}', 'MyController@anotherMethod');

У вас будет другой метод действия в вашем контроллере, чтобы получать входные данные зоны и виллы , например это-

public function anotherMethod($zone, $villa)
{
    // Access your $zone and $villa here
}
26
задан tvanfosson 15 August 2009 в 14:16
поделиться

10 ответов

Я бы сказал:

  • Пространство имен : категория или марка автомобилей. Обратите внимание, что марка действительно не должна диктовать, как автомобиль построен. Вы не можете сказать, что у Хонды всегда есть четыре двери, или что у нее всегда есть 4wd. Такая специфика зависит от класса, чтобы диктовать. Пост Rich.Carpenter очень хорошо объясняет назначение пространств имен.

  • Класс : План создания конкретного автомобиля.

  • Объект : Создан реальный автомобиль (экземпляр). из схемы автомобиля (класс)

  • Метод : что-то, что может сделать пользователь автомобиля. Start () , IncreaseThrottle () , Brake () , OpenDoor () и т. Д.

  • Свойство : Атрибуты, информация и строительные блоки, которые содержит автомобиль , Например, общее количество пройденных миль, цвет, размер рулевого колеса, стереосистема и т. Д. И т. Д.

Некоторые концепции, которые могут показаться вам более продвинутыми. Может быть, сейчас излишне, но прочитайте его, если вам интересно:

  • Наследование : когда класс основан на другом классе и добавляет некоторые более конкретные детали. Линия наследования обычно проходит от наиболее распространенного и общего аспекта вплоть до того момента, когда нет смысла быть более конкретным. Пример этого в контексте животных: Animal-> Mamal-> Rodent-> Rat-> RattusNorvegicus

  • Aggregates : свойства, которые "строят" объект. Например Пример использования в следующем пункте.

  • Полиморфизм : сложная концепция, чтобы понять, пока вы не начнете использовать его практически. Это означает ссылку на очень специфический тип объекта, используя общую ссылку, которая позволяет вам игнорировать конкретный тип (когда вам не нужно его знать). Например, если вы хотите «прочитать» номерной знак каждого транспортного средства на стоянке, вам все равно, какой это бренд, даже если это трейлер, мотоцикл или что-то еще. Чтобы сделать это, мы должны убедиться, что номерной знак является свойством в самом общем классе в строке наследования (вероятно, класс Vehicle ). Таким образом, вам нужно иметь дело только со всеми объектами в списке, называя их классом Vehicle , а затем вызывая Vehicle :: GetLicensePlateNumber () . Любое транспортное средство, требующее некоторой специальной обработки для получения номера, может реализовать это поведение, переопределив метод и заставить его вести себя как требуется. Таким образом, широкий спектр типов объектов может использоваться, как если бы они были одного типа, но могут вести себя по-разному.

64
ответ дан 28 November 2019 в 06:02
поделиться

Думайте о классах как об описании объектов и методов как о действиях, которые эти объекты могут выполнять.

Например, я проектирую новую машину. Планы или чертежи (классы) для этого автомобиля - это то, что используется для создания реальных, физических автомобилей (объектов). Эти планы указывают на то, что автомобиль должен иметь функциональный гудок. Поэтому я разработал сигнализирующую функциональность (метод) в автомобиле. Эти планы также указывают на то, что у машины четыре колеса. Колеса были бы свойством автомобиля с экземпляром (назначенным свойству при создании объекта) значением 4. Цвет был бы другим возможным свойством. Свойства описывают качества или характеристики объекта (цвет, высота, ширина и т. Д.). Теперь я работаю в Toyota (не совсем, но терплю меня). Тойота была бы пространством имен, которое включает мой автомобильный проект. Так как у Ford, GM и т. Д. Могут быть свои собственные конструкции (классы) автомобилей с одинаковыми именами (car) и методами (honk), пространства имен Toyota, Ford и GM разделяют эти чертежи (классы) и отличается, так как вы можете иметь несколько версий классов и методов с одним и тем же именем в приложении, когда они имеют разные пространства имен.

Надеюсь, это поможет.

28
ответ дан 28 November 2019 в 06:02
поделиться

Классы обычно используются для представления какого-либо объекта. Это может напоминать физический объект, такой как счет-фактура, но это может быть и нечто более абстрактное.

Животные иногда используются в качестве примеров для занятий, потому что мы знакомы с тем, как работают животные. Итак, давайте использовать некоторых животных:

Классы могут быть разновидностью животных, таких как Кошка и Собака . Когда вы создаете экземпляр класса, он становится конкретным объектом, таким как собака Фидо.

Пространства имен используются для логической группировки классов, поэтому классы Cat и Dog могут быть помещается в пространство имен Animals.Pets . Хотя пространства имен являются иерархическими, это не делает классы в них иерархическими. Это просто разные группы, поэтому классы в пространстве имен Animals не являются автоматически родителями классов в пространстве имен Animals.Pets .

Методы - это то, что делают объекты, как Eat () и Sleep () .

Свойства - это то, что описывает аспект объекта, например NumberOfLegs и IsSleeping .

Пространства имен используются для логической группировки классов, поэтому классы Cat и Dog могут быть помещены в пространство имен Animals.Pets . Хотя пространства имен являются иерархическими, это не делает классы в них иерархическими. Это просто разные группы, поэтому классы в пространстве имен Animals не являются автоматически родителями классов в пространстве имен Animals.Pets .

Методы - это то, что делают объекты, как Eat () и Sleep () .

Свойства - это то, что описывает аспект объекта, например NumberOfLegs и IsSleeping .

Пространства имен используются для логической группировки классов, поэтому классы Cat и Dog могут быть помещены в пространство имен Animals.Pets . Хотя пространства имен являются иерархическими, это не делает классы в них иерархическими. Это просто разные группы, поэтому классы в пространстве имен Animals не являются автоматически родителями классов в пространстве имен Animals.Pets .

Методы - это то, что делают объекты, как Eat () и Sleep () .

Свойства - это то, что описывает аспект объекта, например NumberOfLegs и IsSleeping .

поэтому классы Cat и Dog могут быть помещены в пространство имен Animals.Pets . Хотя пространства имен являются иерархическими, это не делает классы в них иерархическими. Это просто разные группы, поэтому классы в пространстве имен Animals не являются автоматически родителями классов в пространстве имен Animals.Pets .

Методы - это то, что делают объекты, как Eat () и Sleep () .

Свойства - это то, что описывает аспект объекта, например NumberOfLegs и IsSleeping .

поэтому классы Cat и Dog могут быть помещены в пространство имен Animals.Pets . Хотя пространства имен являются иерархическими, это не делает классы в них иерархическими. Это просто разные группы, поэтому классы в пространстве имен Animals не являются автоматически родителями классов в пространстве имен Animals.Pets .

Методы - это то, что делают объекты, как Eat () и Sleep () .

Свойства - это то, что описывает аспект объекта, например NumberOfLegs и IsSleeping .

2
ответ дан 28 November 2019 в 06:02
поделиться

Я бы сказал, что ваши классы могут быть рабочими местами, выполнять различные действия (другими словами, действиями являются методы). У вас может быть несколько отдельных людей, выполняющих действия (различные экземпляры объектов).

Эти наборы должностей будут находиться в отделе. У финансов есть свои рабочие места / классы (бухгалтеры, бухгалтеры ...), но им нужно будет работать с отделом продаж, у которого есть свои типы рабочих мест / классов.

В этом смысле различные отделы являются пространствами имен. люди, работающие в отделе продаж, должны в конечном итоге работать с финансами. Несколько отделов (или пространств имен) работают вместе для достижения цели.

Теперь эти отделы могут быть частью компании; эта компания будет корневым пространством имен всех этих отделов. И таким образом, пространства имен могут существовать и быть вложенными друг в друга.

2
ответ дан 28 November 2019 в 06:02
поделиться

Используя аналогию с чертежами домов.

План - это класс. Он определяет множество деталей, но также не учитывает множество свойств, таких как цвет дома, цвет и стиль входной двери и т. Д. Вы знаете, проверив чертеж, где будет дверь, и что там есть дверь.

Объект - это дом, который вы строите по этому чертежу. Вы можете построить много домов по одной и той же схеме. Все они имеют одинаковый внешний вид и планировку, но свойства могут различаться, например, цвет внешней краски, стиль входной двери и т. Д. Входная дверь находится в одном месте во всех домах.

Вы можете назовите каждый из этих домов экземплярами дома из определенного чертежа.

Итак, как красноречиво сказано @yx ,

3
ответ дан 28 November 2019 в 06:02
поделиться

Объект может быть экземпляром класса?

2
ответ дан 28 November 2019 в 06:02
поделиться

одним предложением:

Объект - это Экземпляр класса

13
ответ дан 28 November 2019 в 06:02
поделиться

Класс - это тип объекта. Например, у вас может быть столько объектов одного класса, сколько вы хотите.

Экземпляр - это объект, и иногда два термина используются взаимозаменяемо, потому что во многих языках все объекты также являются экземплярами класса. Люди используют слово «экземпляр», чтобы явно указать, что они говорят не о классе, а об объекте этого класса.

1
ответ дан 28 November 2019 в 06:02
поделиться

Класс определяет, как выглядит объект - какие данные он содержит, какие методы у него есть и с какими другими классами он связан.

Экземпляр - это единый созданный объект этого класса. - это объект, созданный с использованием определения класса в качестве ссылки.

1
ответ дан 28 November 2019 в 06:02
поделиться

Класс - это шаблон для объекта. Исходный код сообщает компилятору, какие переменные-члены и методы входят в объект этого типа класса.

Объект и экземпляр на самом деле одинаковы. Из шаблона класса вы можете создать множество экземпляров (или объектов) класса. У каждого из них все члены и методы, определенные в классе, находятся в его собственной памяти (хотя у вас могут быть общие члены, а методы почти всегда используются совместно между экземплярами).

1
ответ дан 28 November 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: