Структура конечного автомата PHP

Да, Вы можете. Указатель на членскую переменную класса хранится <ударяют> на стеке с остальной частью значений структуры, и данные экземпляра класса хранятся на "куче".

Структуры могут также содержать определения классов как участников (внутренние классы).

Вот некоторый действительно бесполезный код, который, по крайней мере, компилирует и работает, чтобы показать, что это возможно:

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyStr m = new MyStr();
            m.Foo();

            MyStr.MyStrInner mi = new MyStr.MyStrInner();
            mi.Bar();

            Console.ReadLine();
        }
    }

    public class Myclass
    {
        public int a;
    }

    struct MyStr
    {
        Myclass mc;

        public void Foo()
        {
            mc = new Myclass();
            mc.a = 1;
        }

        public class MyStrInner
        {
            string x = "abc";

            public string Bar()
            {
                return x;
            }
        }
    }
}
19
задан Paul Hutton 1 November 2011 в 20:46
поделиться

1 ответ

Symfony имеет компонент рабочего процесса с 2016, который включает все функции конечного автомата, которые Вы можете вообразить и кажетесь и гибкими и опытными к настоящему времени. Это связано к Symfony, поэтому при использовании Symfony и Doctrine, очень легко интегрироваться (но можно использовать его автономный также). Я также как то, как Вы можете выводить визуальные представления своих рабочих процессов , чтобы показать его людям или обсудить его с командой, и существую много превосходных учебных руководств, доступных онлайн или в реальных цехах.

существует несколько хороших видео на YouTube об обоих конечных автоматах и как Вы используете их с компонентом рабочего процесса, как этот Michelle Sanver или этот Tobias Nyholm .

Однако компонент рабочего процесса действительно принимает много вещей о Вашем конечном автомате и работает лучше всего, если Вы следуете за теми принципами и комбинируете его с другими смежными компонентами (Диспетчер События Symfony и Доктрина). Если Вы используете Доменный Управляемый Дизайн или CQRS или хранилище события, или что-либо совершенствовалось как этот, могло бы иметь смысл просто обрабатывать Ваши собственные состояния. Сначала потяните свой конечный автомат (таким образом, Вы знаете состояния и переходы), и затем реализуйте классы, чтобы обработать изменения или получить доступ к текущему состоянию - сложной вещью о конечных автоматах является логика (о котором необходимо думать заранее так или иначе), не обязательно представление в коде. Получите хорошее схватывание того, как конечные автоматы работают, вдохновляются библиотеками как компонент рабочего процесса Symfony (можно даже моделировать в тех или попробовать его ими сначала), и затем попытайтесь адаптировать его к ситуации и видеть, где самая важная логика конечного автомата и как можно осуществить его.

0
ответ дан 30 November 2019 в 02:20
поделиться
Другие вопросы по тегам:

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