U E D R , A S I H C RSS

황현/Objective-P

�제 PHP�서� Objective-C� 아름다운 문법�!

특징

  • ObjCì�˜ ì •ì‹ ì�„ ì�´ì–´ë°›ì•„, ObjP ìž�체는 PHPì—� ì‚´ì§� ì–‘ë…�ì�„ 친 형태를 ë�ˆë‹¤.
    • 즉, Objective-P와 순수 PHP 코드를 혼용해 사용할 수 있다! (Just like we can mix up ObjC and pure C!)
    • 컴파ì�¼ 후ì—�는 순수 PHP 코드가 ë�œë‹¤.
  • 개발ìž�ì�˜ 편ì�˜ë¥¼ ë�•는 Gin 프레임워í�¬ê°€ ë�™ë´‰ë�  예정ì�´ë‹¤. (ì ‘ë‘�ì–´: GN)

Specification (Draft)

Class 선언 � 정�

Objective-J� 경우처럼, �래스� 선언과 정�를 �시� 한다. (사실 PHP� 구조�, �럴 수 밖� 없다.)
다만, @implementation만 사용하면 @interface가 외로워하니까, �스턴스 변수� 선언�는 @interface를 사용하�� 하고, 메소드 선언 � 정�� @implementation� 사용한다.

// �래스 선언 � 정�
@interface MyFirstObjPClass : GNObject <GNSomeProtocol>

@private // 요건 비지빌리티 �디케�터. 옵셔�하다. :) �략하면 기본값으로 @protected �용.
$iStoreSomething;

@end

@implementation MyFirstObjPClass

+(int)tellMeTheTruth {
return 42;
}

- (void) doSomeTaskWithSomething:(int)$localIntegerVar {
// some magic happens...
}

@end


// �래스 사용
$myClass = [MyFirstObjPClass new];

[$myClass doSomeTaskWithSomething:42];

[$myClass release];

실제 구현

컴파� �후, 위 코드는 최종�으로 다�과 같� 변해야 한다. (PHP 5 �체 모�)
GNAssert()� 경우, � 번째 ��로 @"문�열"� 받지만, 결과�으로는 컴파� �후 GNString으로 변해야 한다.
class MyFirstObjPClass extends GNObject implements GNSomeProtocol {

private $iStoreSomething;


public static function tellMeTheTruth() {
return 42;
}

public function doSomeTaskWithSomething($localIntegerVar, $_objp_type_check=false) { // (void)
if($_objp_type_check===true) {
if(is_int($localIntegerVar)===false)
GNAssert(false, new GNString('뭔가 ��하지 않아?'));
}

// some magic happens...
}
}

$myClass =MyFirstObjPClass::new(); // defined in GNObject

$myClass->doSomeTaskWithSomething(42, true); // Compiler automatically adds last argument!

$myClass->release(); // actually, does nothing unless you overrides it.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:35
Processing time 0.0059 sec