承接 olcaytaner/datastructure 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

olcaytaner/datastructure

Composer 安装命令:

composer require olcaytaner/datastructure

包简介

Data Structure Library

README 文档

README

The idea of caching items for fast retrieval goes back nearly to the beginning of the computer science. We also use that idea and use a LRU cache for storing morphological analyses of surface forms. Before analyzing a surface form, we first look up to the cache, and if there is an hit, we just take the analyses from the cache. If there is a miss, we analyze the surface form and put the morphological analyses of that surface form in the LRU cache. As can be expected, the speed of the caching mechanism surely depends on the size of the cache.

For Developers

You can also see Cython, Java, C, C++, Swift, Python, Js, or C# repository.

Requirements

Php

To check if you have a compatible version of Php installed, use the following command:

php -V

You can find the latest version of Php here.

Git

Install the latest version of Git.

Download Code

In order to work on code, create a fork from GitHub page. Use Git for cloning the code to your local or below line for Ubuntu:

git clone <your-fork-git-link>

A directory called DataStructure will be created. Or you can use below link for exploring the code:

git clone https://github.com/starlangsoftware/DataStructure-Php.git

Open project with PhpStorm IDE

Steps for opening the cloned project:

  • Start IDE
  • Select File | Open from main menu
  • Choose DataStructure-Php file
  • Select open as project option
  • Couple of seconds, dependencies will be downloaded.

For Developers

CounterHashMap

CounterHashMap bir veri tipinin kaç kere geçtiğini hafızada tutmak için kullanılmaktadır.

Bir CounterHashMap yaratmak için

$a = new CounterHashMap()

Hafızaya veri eklemek için

put(mixed $key)

Örneğin,

$a->put("ali");

Bu aşamanın ardından "ali" nin sayacı 1 olur.

Hafızaya o veriyi birden fazla kez eklemek için

putNTimes(mixed $key, int $N)

Örneğin,

$a->putNTimes("veli", 5)

Bu aşamanın ardından "ali"'nin sayacı 5 olur.

Hafızada o verinin kaç kere geçtiğini bulmak için

count(mixed key):int

Örneğin, "veli" nin kaç kere geçtiğini bulmak için

kacKere = $a->count("veli")

Bu aşamanın ardından kacKere değişkeninin değeri 5 olur.

Hafızada hangi verinin en çok geçtiğini bulmak için

max() -> mixed

Örneğin,

kelime = $a->max()

Bu aşamanın ardından kelime "veli" olur.

LRUCache

LRUCache veri cachelemek için kullanılan bir veri yapısıdır. LRUCache en yakın zamanda kullanılan verileri öncelikli olarak hafızada tutar. Bir LRUCache yaratmak için

LRUCache(int $cacheSize)

kullanılır. cacheSize burada cachelenecek verinin büyüklüğünün limitini göstermektedir.

Cache'e bir veri eklemek için

add(string|int $key, mixed $data)

kullanılır. data burada eklenecek veriyi, key anahtar göstergeyi göstermektedir.

Cache'de bir veri var mı diye kontrol etmek için

contains(string|int $key): bool

kullanılır.

Cache'deki veriyi anahtarına göre getirmek için

get(string|int $key): mixed

kullanılır.

For Contibutors

composer.json file

  1. autoload is important when this package will be imported.
  "autoload": {
    "psr-4": {
      "olcaytaner\\WordNet\\": "src/"
    }
  },
  1. Dependencies should be maximum (not only direct but also indirect references should also be given), everything directly in the code should be given here.
  "require-dev": {
    "phpunit/phpunit": "11.4.0",
    "olcaytaner/dictionary": "1.0.0",
    "olcaytaner/xmlparser": "1.0.1",
    "olcaytaner/morphologicalanalysis": "1.0.0"
  }

Data files

  1. Add data files to the project folder. Subprojects should include all data files of the parent projects.

Php files

  1. Do not forget to comment each function.
    /**
     * Returns true if specified semantic relation type presents in the relations list.
     *
     * @param SemanticRelationType $relationType element whose presence in the list is to be tested
     * @return bool true if specified semantic relation type presents in the relations list
     */
    public function containsRelationType(SemanticRelationType $relationType): bool{
        foreach ($this->relations as $relation){
            if ($relation instanceof SematicRelation && $relation->getRelationType() == $relationType){
                return true;
            }
        }
        return false;
    }
  1. Function names should follow caml case.
    public function getRelation(int $index): Relation{
  1. Write getter and setter methods.
    public function getOrigin(): ?string
    public function setName(string $name): void
  1. Use standard javascript test style by extending the TestCase class. Use setup when necessary.
class WordNetTest extends TestCase
{
    private WordNet $turkish;

    protected function setUp(): void
    {
        ini_set('memory_limit', '450M');
        $this->turkish = new WordNet();
    }

    public function testSize()
    {
        $this->assertEquals(78327, $this->turkish->size());
    }
  1. Enumerated types should be declared with enum.
enum CategoryType
{
    case MATHEMATICS;
    case SPORT;
    case MUSIC;
    case SLANG;
    case BOTANIC;
  1. If there are multiple constructors for a class, define them as constructor1, constructor2, ..., then from the original constructor call these methods.
    public function constructor1(string $path, string $fileName): void
    public function constructor2(string $path, string $extension, int $index): void
    public function __construct(string $path, string $extension, ?int $index = null)
  1. Use __toString method if necessary to create strings from objects.
    public function __toString(): string
  1. Use xmlparser package for parsing xml files.
  $doc = new XmlDocument("../test.xml");
  $doc->parse();
  $root = $doc->getFirstChild();
  $firstChild = $root->getFirstChild();

统计信息

  • 总下载量: 35
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 5
  • 依赖项目数: 11
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-or-later
  • 更新时间: 2024-11-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固