Tuesday, 29 July 2014

PHP onject to array

Handy bit of PHP to convert and object to an array 
 
public function objectToArray($obj) 
{
    if(!is_array($obj) && !is_object($obj)) 
    return $obj;

    if(is_object($obj)) 
    $obj = get_object_vars($obj);

    return array_map(array($this, 'objectToArray'), $obj);
}

Wednesday, 23 July 2014

Mobile DJ site for Somerset and Bristol.

The website for Keith Hards Wedding and Mobile  DJ Somerset is now live, bookings can be made from January 2015. I will be available throughout Somerset and Bristol, have an all new setup including 8 scanner lights, Wharfedale Pro sound system and windup truss system.

Tuesday, 24 June 2014

VMware network problem after sleep and wakeup on windows

After putting your windows machine to sleep and waking up, you will most likely find that the networking no longer works. I have encountered this problem on several machines.

Not to fear I have a solution.

Create a windows batch file .bat and insert the following commands. These commands will reset the VMware network adaptor.

net stop vmnetbridge
net start vmnetbridge
pause


You will need to execute the batch file as Administrator

Wednesday, 11 June 2014

Shameless plug for my fathers online model engine store

My dad's online model engine shop nitrosteamengines.co.uk looks like it needs a bit of an update. It's time to drop oscommerce as good as it's been over the last 5/6 years!
Time to investigate Magento, OpenCart and Zen Cart to see if they will offer a better solution.

Monday, 24 February 2014

PHP Array to stdClass <–> stdClass to Array

Function to Convert stdClass Objects to Multidimensional Arrays

<?php
 
 function objectToArray($d) {
  if (is_object($d)) {
   // Gets the properties of the given object
   // with get_object_vars function
   $d = get_object_vars($d);
  }
 
  if (is_array($d)) {
   /*
   * Return array converted to object
   * Using __FUNCTION__ (Magic constant)
   * for recursive call
   */
   return array_map(__FUNCTION__, $d);
  }
  else {
   // Return array
   return $d;
  }
 }
 
?>

Function to Convert Multidimensional Arrays to stdClass Objects

<?php
 
 function arrayToObject($d) {
  if (is_array($d)) {
   /*
   * Return array converted to object
   * Using __FUNCTION__ (Magic constant)
   * for recursive call
   */
   return (object) array_map(__FUNCTION__, $d);
  }
  else {
   // Return object
   return $d;
  }
 }
 
?>

Function usage

 // Create new stdClass Object
 $init = new stdClass;
 
 // Add some test data
 $init->foo = "Test data";
 $init->bar = new stdClass;
 $init->bar->baaz = "Testing";
 $init->bar->fooz = new stdClass;
 $init->bar->fooz->baz = "Testing again";
 $init->foox = "Just test";
 
 // Convert array to object and then object back to array
 $array = objectToArray($init);
 $object = arrayToObject($array);
 
 // Print objects and array
 print_r($init);
 echo "\n";
 print_r($array);
 echo "\n";
 print_r($object);
Test output:
stdClass Object
(
    [foo] => Test data
    [bar] => stdClass Object
        (
            [baaz] => Testing
            [fooz] => stdClass Object
                (
                    [baz] => Testing again
                )

        )

    [foox] => Just test
)

Array
(
    [foo] => Test data
    [bar] => Array
        (
            [baaz] => Testing
            [fooz] => Array
                (
                    [baz] => Testing again
                )

        )

    [foox] => Just test
)

stdClass Object
(
    [foo] => Test data
    [bar] => stdClass Object
        (
            [baaz] => Testing
            [fooz] => stdClass Object
                (
                    [baz] => Testing again
                )

        )

    [foox] => Just test
)

Wednesday, 15 January 2014

Mutex's and Semaphores - The toilet Example.

Mutex:

Is a key to a toilet. One person can have the key - occupy the toilet - at the time. When finished, the person gives (frees) the key to the next person in the queue.
Officially: "Mutexes are typically used to serialise access to a section of re-entrant code that cannot be executed concurrently by more than one thread. A mutex object only allows one thread into a controlled section, forcing other threads which attempt to gain access to that section to wait until the first thread has exited from that section." Ref: Symbian Developer Library
(A mutex is really a semaphore with value 1.)

Semaphore:

Is the number of free identical toilet keys. Example, say we have four toilets with identical locks and keys. The semaphore count - the count of keys - is set to 4 at beginning (all four toilets are free), then the count value is decremented as people are coming in. If all toilets are full, ie. there are no free keys left, the semaphore count is 0. Now, when eq. one person leaves the toilet, semaphore is increased to 1 (one free key), and given to the next person in the queue.
Officially: "A semaphore restricts the number of simultaneous users of a shared resource up to a maximum number. Threads can request access to the resource (decrementing the semaphore), and can signal that they have finished using the resource (incrementing the semaphore)." Ref: Symbian Developer Library