Fork me on GitHub
Objective-PHP is a port of the Objective-C (or Objective-J runtime to PHP. This adds the language features of Objective-C nestled nicely inside the syntax of Objective-C. Moka is a port of the Apple Cocoa Frameworks (or Cappuccino).

Objective-PHP and Moka

Objective-PHP release under the BSD 3-clause license. Moka released under the LGPL (see COPYING & COPYING.LESSER) Copyright 2009, 2010 Stephen Paul Ierodiaconou stephen@flat53.com

Objective-PHP is a port of the Objective-C (or Objective-J ) runtime to PHP. This adds the language features of Objective-C nestled nicely inside the syntax of Objective-C.

Moka is a port of the Apple Cocoa Frameworks (or Cappuccino ). As PHP is primarily a server side scripting language the frameworks are currently non-UI ones (Foundation).

Intro to Objective-PHP & Moka from Stephen Ierodiaconou on Vimeo.

I created this a way of learning the Objective-C/J languages in as much depth as possible. However, through this process a programming language and set of tools has resulting and as such has been released as Open Source in the hope others too can learn and find use from it. Also since the original goal was to learn I have created this site and as much documentation and tutorials as I could muster so others too could effectively follow this learning path. I hope this complements the skills of the Objective-J Cappuccino programmers, who may program the backend in the well estabilished PHP while still using the syntax and Objects they are so familiar with.

What?

Example Code:

// Test app
@import <Foundation/Foundation.op>
@implementation Test : MKObject
{
    @public     MKString        test1 = "World"     @accessors;
    @protected                  test2 = 12;
    @private    MKDictionary    dic                 @accessors;
}
- (id)init
{
    if ($self = [super init])
    {
        $self->dic = [MKDictionary dictionary];
        [$self->dic setObject:
            [[MKString alloc] initWithString:"Hello"] forKey:"First"];
    }
    return $self;
}
- (void)hello:name1 and:name2
{
    echo $self->test1." ".[$self->dic objectForKey:"First"].
                        " and ".$name1." and ".$name2."\n";
}
+ (String)testclass:variable
{
    return "\nHi from class Method\n".$variable;
}
@end
?>
<p>This is in HTML mode</p>
<?
$instance = [[Test alloc] init];
[$instance hello:"Jane" and:"Bob"];

Why?

For years now I have developed for research and as such have been bound to Matlab and C/C++. To put it lightly I am not a fan of these languages. Recently I have become obsessed with Objective-C, however do not develop in it as much as I wish I could. I use PHP a bit and love the speed of development (this is also Matlab’s only saving grace). Thus born of the desire for a web app development language which is fast, easy to learn, and powerful, is this project.

Of course, I am happy to admit it is completely and utterly inspired by Objective-J and Cappuccino and am happy to plug those as much as possible.

How?

Objective-PHP is PHP, a runtime and a preprocessor. The language can either be interpreted at runtime (into PHP) or for deployment and better performance, preprocessed to generate pure PHP.

Source Code

Main Repo: http://github.com/stevegeek/moka

Examples: http://github.com/stevegeek/mokaexamples

Discussion Group

Google Group: http://groups.google.com/group/objective-php

Disclaimer

I am an electronic engineer whos specialisation is in digital image/video signal processing, thus, while I love programming, if I have made any school boy programming or computer science background errors please feel free to contact me and tell me. Its all about learning after all.

Stephen Paul Ierodiaconou