Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

kendi yazdigim framework Smceframework-MVC

Konu, 'Framework / MVC' kısmında ceida tarafından paylaşıldı.

  1. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    https://github.com/imadige/smceframework-MVC


    Yaklaşık 1.5 ay uğraşıyorum üzerinde biraz ilerleme gerçekleştirdim. Önerilerinizi ve Eleştirilerinizi alabilirmiyim.

    Composer

    https://packagist.org/packages/smce/framework
    Features


    MVC
    PSR
    Autoload
    Session Management
    Validation
    Masterpage/Layout
    Template Engine
    ActiveRecord(MySQL, SQLite, PostgreSQL, Oracle)
    MeekroDB(MySQL)
    Accses Rules
    Debug
    Logger
    Router
    Zip Encoding Class
    User Agent Class
     
  2. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,140
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    Wıth all my heart,congratulationsssssssssssssssssssssssssssssssss.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
  3. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    teşşekür ederim :)
     
  4. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,140
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    kendi kendisinin frameworkunu yazan adama sonsuz saygım var..sağdan soldan onun bunun fw sini mi ogrensem diye zaman harcayan adamdan daha büyük adam daha büyük developerdır..buda benim şahsi fikrim..fw ni incelemedim...umarım uygun zamanda incelerim..
     
  5. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    teşşekür ederim. Amaccım şirkette resful api yapmaktı. ilk başlarda MC ile başladım. Sonra view olsun isterdim MVC oldu :) sonra template,layout ve diğerleri sırasıyla geldi. en kısa zamanda değerlendirmeleri bekliyorum
     
  6. hsma

    hsma Yeni Üye

    Kayıt:
    3 Aralık 2014
    Mesajlar:
    7
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
    Sevgili kardeşim canı gönülden tebrik ediyorum. Bugüne kadar hep hazır yapılmışları öğrenmenin peşinde koşan bir millet olarak - ki bir çok kendisini developer olarak addeden arkadaş "aaa codeigniter kullanmıyor musun" gibi dudak bükerek kendine has framework oluşturmayı hamallık addederken - bu tarz geliştirmelere ihtiyaç var. Bir gün framework kullanarak yazmak istersem ilk tercihlerimdem birisi olacaksın. Gösterdiğin çaba ve cesaret içinde kendi adıma teşekkür ederim.
     
  7. intrepid

    intrepid Üye

    Kayıt:
    23 Haziran 2014
    Mesajlar:
    74
    Beğenilen Mesajlar:
    0
    Evet gerçekten Çok başarılı Bazı insanlar amerikayı yeniden keşfetmenin gereksiz olduğunu söylüyor. keşfeden ben olsaydım gereksiz olduğunu düşüne bilirdim.
     
  8. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Amac bence şu, baska ulkeler biseyler basararak isimlerini duyurabiliyor. Bizim Turkiye olarak biseyleri basarmamiz gerekli degil mi ?
     
  9. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,140
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    konus kardeşim konuş..:) bu arada bayan mısın sen ? ceida nicki gorunce..bunu sormamdaki amaç bayansan bir kere daha tebrik edicem seni :) ahahah
     
  10. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    :D :D :D yok malesef Erkek. herkes öyle sanıyor :D

    --- Ekleme ---

    Tarihi cok bilmem. Bildigim kadariyla zamaninda uçak uretmek icin testler yapiyomusuz belki gormusunuzdur. Sanirim Elin amerakalisi geliyor diyorki siz bosverin ucak yapmayi, biz zaten bulduk, verelim size demiş.
     
  11. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Dosya/Klasör Yapısı
    Eki Görüntüle 13442

    Ekleneler


    Kod:
    Assets Manager
    Pagination

    Pagination

    Eki Görüntüle 13443
    -----------------------------
    Eki Görüntüle 13444

    Conroller


    PHP:
    use Smce\Core\SmPagination// Pagination kullanılacak Namespacesi ekliyoruz

    public function actionIndex()
        {
            
    $SmPagination=new SmPagination(5); //SmPagination oluştur ve kaçar kaçar sayfalanacak?
            
            
    $model=new ListModel;
            
    $model->apply($SmPagination);
            
    $list=$model->findAll();
            
            
    $this->render("index",array(
                
    'list'=>$list,
                
    'SmPagination'=>$SmPagination
            
    ));
        }

    View

    PHP:
    <table>
        <?php foreach($list as $key=>$value):?>
        
        <tr>
            <td><?=$value->name?></td>
        </tr>
        
        <?PHP endforeach;?>

    </table>

    <br>

    <?php echo $SmPagination->linkPager();?> 
    --- Ekleme ---

    Condeigniter Test "Hello World"

    Kod:
    ab -c 100 -n 30000 http://localhost/ci
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 3000 requests
    Completed 6000 requests
    Completed 9000 requests
    Completed 12000 requests
    Completed 15000 requests
    Completed 18000 requests
    Completed 21000 requests
    Completed 24000 requests
    Completed 27000 requests
    Completed 30000 requests
    Finished 30000 requests
    
    
    Server Software:        Apache/2.4.6
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /ci
    Document Length:        302 bytes
    
    Concurrency Level:      100
    Time taken for tests:   1.296 seconds
    Complete requests:      30000
    Failed requests:        0
    Write errors:           0
    Non-2xx responses:      30000
    Total transferred:      15630000 bytes
    HTML transferred:       9060000 bytes
    Requests per second:    23150.36 [#/sec] (mean)
    Time per request:       4.320 [ms] (mean)
    Time per request:       0.043 [ms] (mean, across all concurrent requests)
    Transfer rate:          11778.65 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0       6
    Processing:     2    4   0.6      4      10
    Waiting:        1    4   0.6      4      10
    Total:          2    4   0.7      4      14
    
    Percentage of the requests served within a certain time (ms)
      50%      4
      66%      5
      75%      5
      80%      5
      90%      5
      95%      5
      98%      5
      99%      5
     100%     14 (longest request)




    SmceFramework Test "Hello World"

    Kod:
    $ ab -c 100 -n 30000 http://localhost/smceframework-MVC-master/demo
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 3000 requests
    Completed 6000 requests
    Completed 9000 requests
    Completed 12000 requests
    Completed 15000 requests
    Completed 18000 requests
    Completed 21000 requests
    Completed 24000 requests
    Completed 27000 requests
    Completed 30000 requests
    Finished 30000 requests
    
    
    Server Software:        Apache/2.4.6
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /smceframework-MVC-master/demo
    Document Length:        329 bytes
    
    Concurrency Level:      100
    Time taken for tests:   1.248 seconds
    Complete requests:      30000
    Failed requests:        0
    Write errors:           0
    Non-2xx responses:      30000
    Total transferred:      17250000 bytes
    HTML transferred:       9870000 bytes
    Requests per second:    24046.32 [#/sec] (mean)
    Time per request:       4.159 [ms] (mean)
    Time per request:       0.042 [ms] (mean, across all concurrent requests)
    Transfer rate:          13502.57 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0       6
    Processing:     2    4   0.6      3       9
    Waiting:        2    4   0.6      3       9
    Total:          3    4   0.8      4      13
    WARNING: The median and mean for the processing time are not within a normal deviation
            These results are probably not that reliable.
    WARNING: The median and mean for the waiting time are not within a normal deviation
            These results are probably not that reliable.
    
    Percentage of the requests served within a certain time (ms)
      50%      4
      66%      4
      75%      5
      80%      5
      90%      5
      95%      5
      98%      6
      99%      6
     100%     13 (longest request)
    --- Ekleme ---

    Eklenenler

    Kod:
    Using ActiveRecord on Multiple Databases
    
    config

    project/main/config/config.php

    PHP:
    'components'=>array(
            
            
    //MySQL, SQLite, PostgreSQL, Oracle
            
    'ActiveRecord'=>array(
                
    'db'=>array(
                    
    "connectionString"=>"mysql://username:password@localhost/db_name"
                
    ),
                
                
    /*
                'db2'=>array(
                    "connectionString"=>"mysql://username:password@localhost/db_name"
                ),
                */
            
    ),
            
        ),
    Model

    /project/main/model/ListModel.php

    PHP:
    <?php
    //ActiveRecord example

    use Smce\Core\SmActiveRecord;

    class 
    ListModel extends SmActiveRecord
    {
        
        public static 
    $table_name="list";
        
        public static 
    $connection="db";

    Controller


    PHP:
    <?php

    use Smce\Core\SmController;

    use 
    Smce\Core\SmActiveEvent;

    class 
    ActiverecordController extends SmController
    {

        public 
    $layout='//layouts/column1';
        
        public function 
    actionIndex(){
            
            
    $connection Smce::app()->db();
            
            
    //PDOStatement Class
            
    $list=$connection->query("select * from list")->fetchAll();
            
    // $list=$connection->query("select * from list")->fetch()
            
            
    echo "<pre>";
            
    print_r($list);
        }
        
        public function 
    actionCreate(){
            
    ListModel::create(array(
                
    "name"=>"Samed",
                
    "email"=>"imadige@gmail.com",
            ));
        }
        
        public function 
    actionCreate2(){
            
    $model=new ListModel;
            
    $model->name="Samed";
            
    $model->email="imadige@gmail.com";
            
    $model->save();
        }
        
        
        public function 
    actionUpdate(){
            
    $model=ListModel::model()->find(2);
            
    $model->name="Ceylan";
            
    $model->save();
        }
        
        
        public function 
    actionRetrieve(){
            
    $model=ListModel::find(2);
            echo 
    $model->name="Ceylan";
            echo 
    "<br><br>";
            
            
    $model2=ListModel::find('all', array('order' => 'listID''limit' => 10));
            foreach( 
    $model2 as $key=>$value)
                echo 
    $value->name." ".$value->email."<br>";
        }
        
        
        public function 
    actionDelete(){
            
    $model=ListModel::find(1);
            
    $model->delete();
        }
        
    }
     
  12. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Eklenenler

    Kod:
       Use SSH to Connect to a Remote Server
    
    config

    PHP:
    'components'=>array(
            
            
    'SSH'=>array(
                
    "ssh1"=>array(
                    
    "host"=>"ec2-xx.xx.xx.xx.compute-1.amazonaws.com",
                    
    "username"=>"root",
                    
    //"password"=>"",
                    
    "port"=>"22",
                    
    "pemfile"=>BASE_PATH."/main/data/centosKEy.pem",
                ),
                
                
    /*
                "ssh2"=>array(
                    "host"=>"ec2-xx.xx.xx.xx.compute-1.amazonaws.com",
                    "username"=>"root",
                    //"password"=>"",
                    "port"=>"22",
                    "pemfile"=>BASE_PATH."/main/data/centosKEy.pem",
                ),
                */
            
    ),
            
            
        ),

    Controller
    PHP:
    <?php

    use Smce\Core\SmController;

    use 
    Smce\Core\SmSSH;

    class 
    SshController extends SmController
    {

        public 
    $layout='//layouts/column1';
        
        public function 
    actionExec()
        {
            
    $conn=new SmSSH();
            
    $login=$conn->login("ssh1");
            echo 
    "<pre>";
            echo 
    $login->exec('cd /etc;ls -a');
            
            
    //print_r($conn->getError());
        
    }
        
    }
    Çıktı

    Eki Görüntüle 13449

    --- Ekleme ---

    Buglar düzeltildi

    Eklenenler

    Kod:
    SSH içinde FTP kullanımı
    Config

    PHP:
    'components'=>array(
            
            
    'SSH'=>array(
                
    "ssh1"=>array(
                    
    "host"=>"ec2-xx.xx.xx.xx.compute-1.amazonaws.com",
                    
    "username"=>"root",
                    
    //"password"=>"",
                    
    "port"=>"22",
                    
    "pemfile"=>BASE_PATH."/main/data/centosKEy.pem",
                ),
                
                
    /*
                "ssh2"=>array(
                    "host"=>"ec2-xx.xx.xx.xx.compute-1.amazonaws.com",
                    "username"=>"root",
                    //"password"=>"",
                    "port"=>"22",
                    "pemfile"=>BASE_PATH."/main/data/centosKEy.pem",
                ),
                */
            
    ),
            
            
        ),
    Controller

    PHP:
    <?php

    use Smce\Core\SmController;

    use 
    Smce\Core\SmSFTP;

    class 
    SshController extends SmController
    {

        public 
    $layout='//layouts/column1';
        
        
        public function 
    actionPut()
        {
            
    $conn=new SmSFTP();
            
    $login=$conn->login("ssh1");
            
            echo 
    "<pre>";
            
    $login->put('filename.txt''hello, world!');
            
    print_r($login->nlist());
            
            
    //print_r($conn->getError());
            
        
    }
        
    }

    Çıktı


    Eki Görüntüle 13452

    Eki Görüntüle 13451
     
  13. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    Tebrikler, umarım bir kullanıcı kitlesi oluşturursunuz. ^^
     
  14. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    inşallah :) framework şuan çok yeni, yön belirlemeye çalışıyor. çok yakında EC2 kurduğum serverda yayına geçirmeyi planlıyorum. www.smceframework.com

    Dokumantasonu zorlıyacak biraz katlanacaz artık.


    Eklenenler

    Kod:
    Output Class
    Kod:
    use Smce\Lib\SmOutput;
    Controller

    PHP:
    public function actionOutput()
        {
            
    $SmOutput=new SmOutput;
            
    $SmOutput->setContentType("application/json")
            
    //->setFileName("hello.json")
            
    ->put(json_encode(array('message' => 'Hello, World!')));
        }

    Composer

    PHP:
    <?php

    require("vendor/autoload.php");

    use 
    Smce\Lib\SmOutput;

    $SmOutput=new SmOutput;

    $SmOutput->setContentType("application/json")
    //->setFileName("hello.json")
    ->put(json_encode(array('message' => 'Hello, World!')));

    ?>
     
  15. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    İşin belki de en önemli kısmı dokümantasyon, Türkçe ve İngilizce olarak gayet güzel bir dokümantasyon şart.
     
  16. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Micro Proje

    Ekteki resimdeki gibidir.

    Eki Görüntüle 13453

    --- Ekleme ---

    Eklenenler

    Kod:
    MemCache Class
    Controller

    PHP:
    <?php

    use Smce\Core\SmController;

    use 
    Smce\Core\SmException;
    use 
    Smce\Core\SmMemCache;

    class 
    MemcacheController extends SmController
    {

        public 
    $layout='//layouts/column1';
        
        public function 
    actionIndex()
        {
            try{
                
    $conn=new SmMemCache();
                
    $login=$conn->connect("mem1");
                
                
    $object = new stdClass;
                
    $object->str_attr 'test';
                
    $object->int_attr 123;
                
                
    $login->set("key",$object,300); //300 second
                
    print_r($login->get("key"));
                
            }catch(
    SmException $e){
                echo 
    $e->getMessage();
            }
            
        }
     
  17. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Ekleneler

    Kod:
        Accses Control Lists (ACL)
        Redis Class
        Migration Class
    
    Redis Class
    PHP:
    <?php

    use Smce\Core\SmController;

    use 
    Smce\Core\SmException;
    use 
    Smce\Core\SmRedis;

    class 
    RedisController extends SmController
    {

        public 
    $layout='//layouts/column1';
        
        public function 
    actionIndex()
        {
            try{
                
    $conn=new SmRedis();
                
    $login=$conn->connect("red1");
                
                
    $hello="Hello World!";
                
    //set
                
    $login->set("key",$hello,300); //300 second


                //get
                
    echo $login->get("key");
                
            }catch(
    SmException $e){
                echo 
    $e->getMessage();
            }
            
        }


        public function 
    actionIndex2()
        {
            try{
                
    $conn=new SmRedis();
                
    $login=$conn->connect("red1");
                
                
    $hello="Hello World!";
                
    //set
                
    $login->getRedis()->set("key",$hello,300); //300 second


                //get
                
    echo $login->getRedis()->get("key");
                
            }catch(
    SmException $e){
                echo 
    $e->getMessage();
            }
            
        }
        
        
        
    }

    Migration Class

    controller

    PHP:
    <?php

    use Smce\Core\SmController;
    use 
    Smce\Core\SmMigration;

    class 
    MigrationController extends SmController
    {

        public 
    $layout='//layouts/column1';
        
        public function 
    actionTables()
        {

            
    $migration=new SmMigration("db1");

            
    $tables=$migration->getTables();
            echo 
    "<pre>";
            
    print_r($tables);
            
            
        }


        public function 
    actionTable()
        {

            
    $migration=new SmMigration("db1");

            
    $table=$migration->getTable("table_name");
            echo 
    $table//bool
        
    }

        public function 
    actionAddcolumn()
        {

            
    $migration=new SmMigration("db1");

            
    $migration->addColumn("table_name","columnname","INT");
            
        }


        public function 
    actionDropcolumn()
        {

            
    $migration=new SmMigration("db1");

            
    $migration->dropColumn("table_name","columnname");
            
        }


        public function 
    actionDroptable()
        {

            
    $migration=new SmMigration("db1");

            
    $migration->dropTable("table_name");
            
        }
        

        public function 
    actionTruncatetable()
        {

            
    $migration=new SmMigration("db1");

            
    $migration->truncateTable("table_name");
            
        }


        public function 
    actionCreatetable()
        {

            
    $migration=new SmMigration("db1");

            
    $columns=array(
                
    "id"    =>     "INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY",
                
    "name"    =>    "VARCHAR(30) NOT NULL"
            
    );

            
    $props="ENGINE = innodb ;";

            
    $migration->createTable("table_name",$columns,$props);
            
        }

        public function 
    actionInsert()
        {

            
    $migration=new SmMigration("db1");

            
    $data=array(
                
    "name"=>"test"
            
    );

            
    $migration->insert("table_name",$data);
            
        }


        public function 
    actionUpdate()
        {

            
    $migration=new SmMigration("db1");

            
    $data=array(
                
    "name"=>"new name"
            
    );

            
    $condition="id=1";

            
    $migration->update("table_name",$data,$condition);
            
        }
        
    }
     
  18. sineld

    sineld Daimi Üye

    Kayıt:
    30 Eylül 2005
    Mesajlar:
    2,075
    Beğenilen Mesajlar:
    0
    Meslek:
    Coder, Bilgi İşlemci, Satınalma
    Şehir:
    Bursa, Türkiye
    Eğer çok iyi bir dokümantasyona sahip değilseniz Framework'ünüz kimse tarafından kullanılmayacaktır.

    Daha fazla kullanıcıya ulaşmak isterseniz, bence; ilave özellikler katmak yerime doküman yazın.
     
  19. James De Souza

    James De Souza Cave Quid Optes

    Kayıt:
    19 Şubat 2008
    Mesajlar:
    2,135
    Beğenilen Mesajlar:
    0
    Meslek:
    Off
    Şehir:
    İzmir
    Bir gün framework kullanarak yazmak istersen, neden kendi framework'ünü yazmayacaksın? :2:
    ne biliyim yani hazır yazılmışlara kitledin durdun ama sonunu getiremedin sanki...
     
  20. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Tessekurler dusunceleriniz adina. Suan bu framework kullanarak dokumantasyon yazilimi gelistiriyorum. Eksikleri ve buglari yakalama sansim oldu. Dokumantasyon yazilimi bitince websitesi harekete gececem. Ama suan eksiklerim var. I18n eklemem gerek. Grud uzerinde eklemelerim olacak. 2 - 4 ay sureye daha ihtiyacim var gibi. Ozaman 1.0.0 versiyonu olusturacam. Suan proje icinde 'demo' hazir uygulamalar mevcut ve Proje gelistirilmeye hazir.

    --- Ekleme ---

    Eki Görüntüle 13494
    Hello World uygulama