За последние 24 часа нас посетили 22608 программистов и 1201 робот. Сейчас ищут 737 программистов ...

удобная работа со строками [решение, рассуждение]

Тема в разделе "Решения, алгоритмы", создана пользователем Koc, 6 июн 2009.

  1. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Есть мысль написать класс (возможно статический) для максимально удобной работы со строками. А стОит ли? что в нем должно быть? Значительно ли он снизит производительность?

    Надоело просто что аргументы перемешиваются и так и сяк.

    Прототип такой обертки
     
  2. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    вообще это навеяно этим.
     
  3. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    ООП ради ООП?
     
  4. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    не, для своего пространства имен. Статья - то просто пример.
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Между прочим легковесная обёртка над строковыми функциями с упорядоченной последовательностью параметров ой как поможет. Я очень заколебался постоянно лазить в мануал и смотреть какой же там порядок, потому что функций слишком много что бы запомнить, а используются они не настолько часто.
     
  6. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Psih
    а в IDE нет подсветки разве с кратким мануалом?
    Типа такого:
    [​IMG]


    а наверно клево было б на Сях в виде расширения че-нить такое написать.
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну нафиг Шевчука,
    по теме, считаю так: если тебе будет так удобнее, делай, у меня как-то не возникало пока проблем...
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Koc
    Подсветка то есть, но если честно - она бывает глючит и не показывается когда пишешь параметры, или когда пишешь вызов в вызове другой функции. Бывает она тупо не успевает за тем, как я пишу код. Да и разная очерёдность параметров просто сбивает с толку. Нужно остановится, вспомнить и потом тока делать, т.е. отвлекаться от задачи. Мне лично это мешает и постоянно пишу не так параметры у строковых функций. Это наверно единственная часть PHP, где у меня постоянные глюки и без дебага никак :)
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я не знаю как кому, но мне не нравится, что обычно указатель идет перед действием.

    file_put_contents('имя файла', 'содержимое') — почему имя файла идет ДО, а не после? :)
    Так и c fwrite, ...
    ИМХО мне удобнее было бы наоборот.
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    c файлом все равно, а вот со строками - наболело.

    да, что-то типа такого и планирую делать, расширив своими ф-циями, типа той, что в 1 сообщении.
     
  12. +5
     
  13. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Дак а для чего иначе пишут оболочки?
    Вот, например:

    PHP:
    1. <?php
    2.  
    3. $file = new FileHandler('file.txt');
    4. $link = new FileHandler('links.txt');
    5.  
    6. if($link->Exists) {
    7.     $link->Copy($file->ReadString(3));
    8. }
    9.  
    10. ?>
    Это пример того, как я когда-то реализовывал оболочку.
    Причем мне было важно не просто переписать внутренние функции и перенастроить их, но и дополнить нужным мне функционалом и УДОБСТВОМ.




    Так что, если не удобно пользоваться чем-то или недостает функционала - you're welcome =)
    Когда-то по аналогу C#:
    PHP:
    1. <?
    2. if(File::Exists('file')) { File::Delete('file'); }
    3.  
    4. try
    5. {
    6.     File::Create('abc.txt');
    7.  
    8.     // А вот тут удобно, когда имя файла вначале
    9.     File::WriteLine('abc.txt', 'Hello, World', WriteMode::Append);
    10. }
    11. catch(FIOException $e)
    12. {
    13.     echo $e->GetMessage();
    14. }
    15. ?>
     
  14. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я всегда в таких функциях смотрю на шпаргалки Jack Daniel'а
     
  15. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Kreker
    Проще иметь обёртку + как говорили выше - можно сделать дополнительный функционал. К примеру рекурсивный обход массивов. Я вот htmlspecialchars напрямую уже не юзаю - у меня есть htlmesc, которая рекурсивно это делает :)
     
  16. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  17. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    http://code.google.com/p/strclass/source/browse/#hg/
    Добавлена поддержка UTF-8 (папка юникод)

    Заюзал интерфейс, но пока не могу понять в чем профит. Какое преимущество этого интерфейса?
     
  18. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    начал писать мануал. Сложно. Какой-то косноязычный я стал.

    Жаль, что никому не интересно.
     
  19. Отнюдь, отнюдь. Я пока просмотрел очень бегло, но заинтересован.
     
  20. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Kocноязычный? :)
     
  21. kostyl

    kostyl Guest

    Потому, что в мануле должна быть одна строка: сделать удобным. Более ты ничего еще не хотел вроде. Так что как таковой проблемы нету для целого манула, на сколько я понимаю.
     
  22. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    нужно писать так, что бы и другие могли понять мой мануал. + мне еще предстоит документировать API магазинных фич.

    Еще я думаю, что у меня много параметров в ф-циях. Это плохо? Тут как бы идет балансировка между кол-вом ф-ций и кол-вом аргументов.
     
  23. kostyl

    kostyl Guest

    Я бы еще провел опрос кому как удобней. И сделал бы средне статистически хотябы. А то этот мануал кроме тебя может и некому читать будет.
    (ps: я не в обиду ж, просто меня не сильно поперло)
     
  24. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Было бы очень круто, если бы ты сделал такое.
    Хотя я не совсем согласен с твоим подходом, но с удовольствием форкнул бы.
     
  25. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    ну а на счет мана - ты ведь не для нубов пишешь.
    вполне будет достаточно обычного коммента перед методом, абы быстрее разрабатывал.