making a class object global

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • windandwaves

    making a class object global

    Hi gurus

    I have a class from which I create an object. I want this object to be
    available in all my functions for my application. Basically, I want to
    make the object global. What is the best way to do this?

    Thank you

    Nicolaas

  • Jerry Stuckle

    #2
    Re: making a class object global

    windandwaves wrote:
    Hi gurus
    >
    I have a class from which I create an object. I want this object to be
    available in all my functions for my application. Basically, I want to
    make the object global. What is the best way to do this?
    >
    Thank you
    >
    Nicolaas
    >
    Like any other variable. Pass it as a parameter to the functions
    (highly recommended) or make it global (not recommended).

    --
    =============== ===
    Remove the "x" from my email address
    Jerry Stuckle
    JDS Computer Training Corp.
    jstucklex@attgl obal.net
    =============== ===

    Comment

    • windandwaves

      #3
      Re: making a class object global

      Thanks Jerry

      I know about those methods. That is cool, problem is that I dont want
      to add an extra variable to each function (over 30) that I have for
      this site.

      Anyway, I will stick with that for now.

      Thanks a million for your reply.

      Nicolaas


      Jerry Stuckle wrote:
      windandwaves wrote:
      Hi gurus

      I have a class from which I create an object. I want this object to be
      available in all my functions for my application. Basically, I want to
      make the object global. What is the best way to do this?

      Thank you

      Nicolaas
      >
      Like any other variable. Pass it as a parameter to the functions
      (highly recommended) or make it global (not recommended).
      >
      --
      =============== ===
      Remove the "x" from my email address
      Jerry Stuckle
      JDS Computer Training Corp.
      jstucklex@attgl obal.net
      =============== ===

      Comment

      • Michael Fesser

        #4
        Re: making a class object global

        ..oO(windandwav es)
        >I have a class from which I create an object. I want this object to be
        >available in all my functions for my application. Basically, I want to
        >make the object global. What is the best way to do this?
        You could search for "singleton" .

        Micha

        Comment

        • windandwaves

          #5
          Re: making a class object global


          Michael Fesser wrote:
          .oO(windandwave s)
          >
          I have a class from which I create an object. I want this object to be
          available in all my functions for my application. Basically, I want to
          make the object global. What is the best way to do this?
          >
          You could search for "singleton" .
          >
          Micha
          Thanks Micha

          That is really cool. I was just reading about static and this is a
          great way to use it. Thanks a million for the recommendation. Cool
          stuff. What would actually be ideal is if there were a function like
          global that you could use when creating an object, which would make the
          object global without having to do this singleton stuff. It would
          actually make sense if the global $myobj just did this if it were used
          outside of a function.

          Thanks

          Nicolaas

          Comment

          • Jerry Stuckle

            #6
            Re: making a class object global

            windandwaves wrote:
            Jerry Stuckle wrote:
            >
            >>windandwave s wrote:
            >>
            >>>Hi gurus
            >>>
            >>>I have a class from which I create an object. I want this object to be
            >>>available in all my functions for my application. Basically, I want to
            >>>make the object global. What is the best way to do this?
            >>>
            >>>Thank you
            >>>
            >>>Nicolaas
            >>>
            >>
            >>Like any other variable. Pass it as a parameter to the functions
            >>(highly recommended) or make it global (not recommended).
            >>
            Thanks Jerry
            >
            I know about those methods. That is cool, problem is that I dont want
            to add an extra variable to each function (over 30) that I have for
            this site.
            >
            Anyway, I will stick with that for now.
            >
            Thanks a million for your reply.
            >
            Nicolaas
            >
            >
            (Top posting fixed)

            Ok, there's another way have a static method to return it, i.e.
            (PHP5 - and not tested so may contain some syntax errors)

            class Test {
            private static $me = null;

            public static function getTest() {
            if (Test::$me == null)
            Test::$me = new Test;
            return Test::$me;
            }
            }

            Test::$me is a private static variable which is shared amongst all
            instances. The function getTest checks Test::$me to see if it is set.
            If not, getTest() allocates a new Test object and assigns it to
            Test::$me. It then returns the value.

            To call it, you just use:

            $test = Test::$getTest( );

            P.S. Please don't top post. Thanks.

            --
            =============== ===
            Remove the "x" from my email address
            Jerry Stuckle
            JDS Computer Training Corp.
            jstucklex@attgl obal.net
            =============== ===

            Comment

            • Michael Fesser

              #7
              Re: making a class object global

              ..oO(Jerry Stuckle)
              >Ok, there's another way have a static method to return it, i.e.
              (PHP5 - and not tested so may contain some syntax errors)
              >
              >class Test {
              private static $me = null;
              >
              public static function getTest() {
              if (Test::$me == null)
              Test::$me = new Test;
              return Test::$me;
              }
              >}
              Should work, even if I would call it getInstance() to be more generic.
              You could also use the keyword 'self' instead of the class name inside
              the function:

              public static function getInstance() {
              if (!isset(self::$ instance)) {
              self::$instance = new self();
              }
              return self::$instance ;
              }

              Then if you should need this function in another class you just have to
              copy it. But that's more or less just personal preference. It works the
              same.
              >Test::$me is a private static variable which is shared amongst all
              >instances.
              JFTR: There's always only _one_ instance. That's why this is called a
              singleton.

              Micha

              Comment

              • Peter Fox

                #8
                Re: making a class object global

                Following on from Jerry Stuckle's message. . .
                >windandwaves wrote:
                >Hi gurus
                >>
                >I have a class from which I create an object. I want this object to be
                >available in all my functions for my application. Basically, I want to
                >make the object global. What is the best way to do this?
                >>
                >Thank you
                >>
                >Nicolaas
                >>
                >
                >Like any other variable. Pass it as a parameter to the functions
                >(highly recommended) or make it global (not recommended).
                >
                Or stick it in $_SESSION. If you do that then make sure you understand
                the PHP version of variable/pointers/references and the use of &.




                --
                PETER FOX Not the same since the bookshop idea was shelved
                peterfox@eminen t.demon.co.uk.n ot.this.bit.no. html
                2 Tees Close, Witham, Essex.
                Gravity beer in Essex <http://www.eminent.dem on.co.uk>

                Comment

                • Jerry Stuckle

                  #9
                  Re: making a class object global

                  Michael Fesser wrote:
                  .oO(Jerry Stuckle)
                  >
                  >
                  >>Ok, there's another way have a static method to return it, i.e.
                  >(PHP5 - and not tested so may contain some syntax errors)
                  >>
                  >>class Test {
                  > private static $me = null;
                  >>
                  > public static function getTest() {
                  > if (Test::$me == null)
                  > Test::$me = new Test;
                  > return Test::$me;
                  > }
                  >>}
                  >
                  >
                  Should work, even if I would call it getInstance() to be more generic.
                  You could also use the keyword 'self' instead of the class name inside
                  the function:
                  >
                  public static function getInstance() {
                  if (!isset(self::$ instance)) {
                  self::$instance = new self();
                  }
                  return self::$instance ;
                  }
                  >
                  Then if you should need this function in another class you just have to
                  copy it. But that's more or less just personal preference. It works the
                  same.
                  >
                  >
                  >>Test::$me is a private static variable which is shared amongst all
                  >>instances.
                  >
                  >
                  JFTR: There's always only _one_ instance. That's why this is called a
                  singleton.
                  >
                  Micha
                  Micha,

                  Yes, this works great. I've been using similar code in C++ since the 80's.

                  Using the class name or self is a matter of programming style. I prefer
                  the class name - I find it to be easier for new programmers to understand.

                  And that's the same reason I don't use buzzwords such as "singleton"
                  when describing how code works. I prefer a clear explanation in simple
                  English, especially here where for many readers English isn't a first
                  language.

                  --
                  =============== ===
                  Remove the "x" from my email address
                  Jerry Stuckle
                  JDS Computer Training Corp.
                  jstucklex@attgl obal.net
                  =============== ===

                  Comment

                  • Jerry Stuckle

                    #10
                    Re: making a class object global

                    Peter Fox wrote:
                    Following on from Jerry Stuckle's message. . .
                    >
                    >windandwaves wrote:
                    >>
                    >>Hi gurus
                    >>>
                    >>I have a class from which I create an object. I want this object to be
                    >>available in all my functions for my application. Basically, I want to
                    >>make the object global. What is the best way to do this?
                    >>>
                    >>Thank you
                    >>>
                    >>Nicolaas
                    >>>
                    >>
                    >Like any other variable. Pass it as a parameter to the functions
                    >(highly recommended) or make it global (not recommended).
                    >>
                    >
                    Or stick it in $_SESSION. If you do that then make sure you understand
                    the PHP version of variable/pointers/references and the use of &.
                    >
                    >
                    >
                    >
                    How is that going to help? It's a complete misuse of the $_SESSION
                    variable - which was never meant to replace the other superglobals such
                    as $_GLOBAL.

                    --
                    =============== ===
                    Remove the "x" from my email address
                    Jerry Stuckle
                    JDS Computer Training Corp.
                    jstucklex@attgl obal.net
                    =============== ===

                    Comment

                    Working...